Hướng dẫn pass by reference python - vượt qua tham chiếu python

Các nhà phát triển nhảy vào lập trình Python từ các ngôn ngữ khác như C ++ và Java thường bị nhầm lẫn bởi quá trình truyền các đối số trong Python. Mô hình dữ liệu tập trung vào đối tượng và cách xử lý phân công của nó là nguyên nhân đằng sau sự nhầm lẫn ở cấp độ cơ bản. & NBSP;

Nội phân chính

  • Vượt qua giá trị và vượt qua tham chiếu trong Python
  • Biến không phải là đối tượng
  • Những gì vượt qua bằng cách tham khảo trong Python?
  • Truyền qua giá trị trong Python là gì?
  • Mục lục
  • Thông qua tham chiếu là gì?
  • Vượt qua bằng tham chiếu vs giá trị trong Python
  • Vượt qua giá trị
  • Vượt qua tham chiếu
  • Mô hình đối tượng Python
  • Bớt tư tưởng
  • Truyền qua giá trị là gì và vượt qua tham chiếu trong Python?
  • Truyền qua giá trị là gì và vượt qua tham chiếu?
  • Python có vượt qua tham chiếu không?
  • Làm thế nào để bạn vượt qua giá trị trong Python?

Nội phân chính

  • Vượt qua giá trị và vượt qua tham chiếu trong Python
  • Biến không phải là đối tượng
  • Những gì vượt qua bằng cách tham khảo trong Python?
  • Truyền qua giá trị trong Python là gì?
  • Mục lục
  • Thông qua tham chiếu là gì?
  • Vượt qua bằng tham chiếu vs giá trị trong Python
  • Vượt qua giá trị
  • Vượt qua tham chiếu
  • Mô hình đối tượng Python
  • Bớt tư tưởng
  • Truyền qua giá trị là gì và vượt qua tham chiếu trong Python?
  • Truyền qua giá trị là gì và vượt qua tham chiếu?
  • Python có vượt qua tham chiếu không?
  • Làm thế nào để bạn vượt qua giá trị trong Python?

Trong bài viết, chúng tôi sẽ thảo luận về khái niệm về cách truyền giá trị bằng cách tham khảo trong Python và cố gắng hiểu các ví dụ ngang qua trong Python.how to pass a value by reference in Python and try to understand pass-by-reference examples in Python.

Vượt qua giá trị và vượt qua tham chiếu trong Python

Bạn có thể muốn đấm một cái gì đó sau khi đọc trước, vì vậy hãy tự chuẩn bị. Mô hình truyền đối số của Python, không phải là người vượt qua giá trị, cũng không vượt qua bởi tham chiếu, nhưng đó là lần vượt qua tham chiếu đối tượng. & NBSP;neither “Pass by Value” nor “Pass by Reference” but it is “Pass by Object Reference”. 

Các mô hình của Pass Pass By Value, Pass Pass By tham chiếu và Pass Pass By By Accident Tham khảo đối tượng có thể được hiểu bằng cách khám phá các hàm ví dụ dưới đây. Nhìn vào hai chức năng được xác định dưới đây:

Python3

def set_list(list

 a = ["X", "Y"]
0

 a = ["X", "Y"]
1list
 a = ["X", "Y"]
3
 a = ["X", "Y"]
4
 a = ["X", "Y"]
5
 a = ["X", "Y"]
6
 a = ["X", "Y"]
7
 a = ["X", "Y"]
6
 a = ["X", "Y"]
9
def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
0

 a = ["X", "Y"]
1
def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
2 list

def

def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
5list____10

 a = ["X", "Y"]
1list
Before function call 100                                       
Inside function call 200
After function call 100 
0
Before function call 100                                       
Inside function call 200
After function call 100 
1
Before function call 100                                       
Inside function call 200
After function call 100 
2

 a = ["X", "Y"]
1
def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
2 list

def

def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
5list____10

def function(int):
    int.append('B')print("Inside function call",int)
    
int=['A']
print("Before function call",int)
function(int)
print("After function call",int)
1
def function(int):
    int.append('B')print("Inside function call",int)
    
int=['A']
print("Before function call",int)
function(int)
print("After function call",int)
2

def function(int):
    int.append('B')print("Inside function call",int)
    
int=['A']
print("Before function call",int)
function(int)
print("After function call",int)
1
def function(int):
    int.append('B')print("Inside function call",int)
    
int=['A']
print("Before function call",int)
function(int)
print("After function call",int)
4

Output:

['A', 'B', 'C']
['E', 'D']

Before function call 100                                       
Inside function call 200
After function call 100 
6
 a = ["X", "Y"]
3
 a = ["X", "Y"]
4
Before function call 100                                       
Inside function call 200
After function call 100 
9
def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)
0

Biến không phải là đối tượng

Bây giờ, hãy để khám phá mã trên, & nbsp;

 a = ["X", "Y"]

Hướng dẫn pass by reference python - vượt qua tham chiếu python

Những gì vượt qua bằng cách tham khảo trong Python?

Ở đây, một người khác là một biến chỉ vào một danh sách chứa phần tử của X X và và Y. Nhưng bản thân một người khác không phải là danh sách. Hãy xem xét một người khác là một cái xô chứa đối tượng là X X và và Y. & NBSP;

Truyền bằng tham chiếu có nghĩa là bạn phải chuyển hàm (tham chiếu) đến một biến đề cập rằng biến đã tồn tại trong bộ nhớ. & NBSP;

Ở đây, biến (nhóm) được truyền trực tiếp vào hàm. Biến hoạt động như một gói đi kèm với nội dung của nó (các đối tượng).

Trong hình ảnh mã trên, cả hai danh sách của người dùng và và My_list là cùng một biến chứa và do đó đề cập đến cùng một đối tượng chính xác trong bộ nhớ. Bất kỳ hoạt động nào được thực hiện bởi hàm trên biến hoặc đối tượng sẽ được người gọi chức năng phản ánh trực tiếp. Chẳng hạn, hàm có thể thay đổi hoàn toàn nội dung biến và trỏ nó vào một đối tượng hoàn toàn khác: & nbsp;

Ngoài ra, hàm có thể gán lại nội dung của biến có cùng hiệu ứng như dưới đây: & nbsp;

Truyền qua giá trị trong Python là gì?

Để tóm tắt, trong tham chiếu qua chức năng và người gọi sử dụng cùng một biến và đối tượng.

Trong phương pháp này, chúng tôi vượt qua một bản sao của các biến thực tế trong chức năng như một tham số. Do đó, bất kỳ sửa đổi nào trên các tham số bên trong hàm sẽ không phản ánh trong biến thực tế.

Điều tương tự cũng đúng với bất kỳ hoạt động nào được thực hiện bởi hàm trên biến hoặc đối tượng & nbsp;

Để tóm tắt các bản sao của các biến và các đối tượng trong bối cảnh người gọi của hàm được phân lập hoàn toàn.

Mục lục

  1. Thông qua tham chiếu là gì?
  2. Vượt qua bằng tham chiếu vs giá trị trong Python
  3. Mô hình đối tượng Python
  4. Bớt tư tưởng

Thông qua tham chiếu là gì?

Vượt qua bằng tham chiếu vs giá trị trong Python
By pass we mean to provide an argument to a function. Whereas by reference means that the argument that has been passed to the function is a reference to a variable that is already existing in the memory. Now that we have cleared that, now we can learn about pass by reference.

Trong tham chiếu vượt qua, biến được chuyển trực tiếp vào hàm trong khi biến hoạt động như một gói đi kèm với các đối tượng. Bởi vì bạn đã cung cấp chức năng một tham chiếu đến một biến hiện có, bất kỳ hoạt động nào bạn thực thi trên đó sẽ có ảnh hưởng trực tiếp đến biến mà nó đề cập đến. the variable it refers to.

Vượt qua bằng tham chiếu vs giá trị trong Python

Khi bạn cung cấp các tham số chức năng thông qua tham chiếu, bạn chỉ chuyển các tham chiếu đến các giá trị đã tồn tại. Mặt khác, khi bạn chuyển các đối số theo giá trị, các đối số trở thành bản sao độc lập của các giá trị ban đầu.

Vượt qua giá trị

Bất kỳ hoạt động nào khác được thực hiện sẽ không có bất kỳ ảnh hưởng nào đến giá trị ban đầu khi đối số được truyền cho hàm được sao chép. Nó chỉ thay đổi giá trị của bản sao được tạo trong hàm.

Input:

def function(int):
  int+=100
  print("Inside function call ",int)

int=100
print("Before function call ",int)
function(int)
print("After function call ",int)

Ở đây, một bản sao của đối số được tạo và các thay đổi được thực hiện cho bản sao đó sao cho giá trị ban đầu không bị ảnh hưởng. Kết quả là, giá trị ban đầu được in sau cuộc gọi hàm.

Output:

Before function call 100                                       
Inside function call 200
After function call 100 

Trong đó, chúng tôi đã gán biến giá trị '100' và thay đổi nó thành '200', nhưng sự thay đổi không được nhìn thấy bên ngoài hàm, tức là int vẫn là '100'. Do đó đã được chứng minh, nó được chuyển qua phương thức giá trị.

Vượt qua tham chiếu

Phương pháp này truyền một tham chiếu đến các đối số gốc và bất kỳ hoạt động nào được thực hiện trên tham số đều ảnh hưởng đến giá trị thực. Nó làm thay đổi giá trị trong cả chức năng và toàn cầu.

Input:

def function(int):
    int.append('B')print("Inside function call",int)
    
int=['A']
print("Before function call",int)
function(int)
print("After function call",int)

Khi một danh sách được sử dụng, tài liệu tham khảo của nó được cung cấp vào hàm và bất kỳ sửa đổi nào cho danh sách đều có hiệu lực ngay cả sau khi phương thức được gọi.

Output:

Before function call ['A']          
Inside function call ['A', 'B']                  
After function call ['A', 'B']

Trong ví dụ trên, function () trả về một chuỗi và cũng sửa đổi giá trị của & nbsp; int. Điều này cho thấy Python hỗ trợ phương thức tham chiếu vượt qua.

Mô hình đối tượng Python

Tốt nhất là trước tiên chúng ta hiểu các đối tượng Python là gì và làm thế nào để mô tả chúng. Trong Python, mọi thứ đều là một đối tượng. Danh tính, kiểu dữ liệu và nội dung của đối tượng đặc trưng cho mọi đối tượng.

# the identity of `int`
id(int)
3578332784044       

# the type of `int`
type(int)
   
   
# the contents of `int`
int [1, 2, 3]           

Như chúng ta có thể thấy ở trên, & nbsp; id & nbsp; là chức năng tích hợp mà bạn sử dụng để truy vấn danh tính của một đối tượng và & nbsp; type & nbsp; là chức năng tích hợp mà bạn sử dụng để truy vấn loại đối tượng.the identity of an object, and type is the built-in function you use to query the type of an object.

Bớt tư tưởng

Python hoạt động khác với các ngôn ngữ lập trình khác khi nói đến việc di chuyển các đối số. Vì bạn đã cung cấp cho chức năng một tham chiếu đến một biến hiện có, tất cả các hoạt động được thực hiện trên tài liệu tham khảo này sẽ ảnh hưởng trực tiếp đến biến mà nó đề cập đến. Người ta có thể tìm hiểu về các khái niệm liên quan đến Python khác ở đây.

Truyền qua giá trị là gì và vượt qua tham chiếu trong Python?

Truyền qua tham chiếu có nghĩa là bạn phải chuyển hàm (tham chiếu) đến một biến đề cập rằng biến đã tồn tại trong bộ nhớ. Ở đây, biến (nhóm) được truyền trực tiếp vào hàm. Biến hoạt động như một gói đi kèm với nội dung của nó (các đối tượng).. Here, the variable( the bucket) is passed into the function directly. The variable acts as a Package that comes with its contents(the objects).

Truyền qua giá trị là gì và vượt qua tham chiếu?

Pass by giá trị: Các giá trị tham số phương thức được sao chép vào một biến khác và sau đó đối tượng được sao chép được truyền, đó là lý do tại sao nó được gọi là Pass by giá trị. Truyền qua tham chiếu: Một bí danh hoặc tham chiếu đến tham số thực tế được chuyển đến phương thức, đó là lý do tại sao nó được gọi là Pass by tham chiếu.The method parameter values are copied to another variable and then the copied object is passed, that's why it's called pass by value. Pass by Reference: An alias or reference to the actual parameter is passed to the method, that's why it's called pass by reference.

Python có vượt qua tham chiếu không?

Python chuyển các đối số không bằng cách tham chiếu cũng như giá trị, mà bằng cách gán..

Làm thế nào để bạn vượt qua giá trị trong Python?

Cuộc gọi theo tham chiếu so với cuộc gọi theo giá trị trong khi gọi một hàm, khi chúng ta truyền các giá trị bằng cách sao chép các biến, nó được gọi là cuộc gọi của các giá trị. Trong phương pháp này, một biến chính được thông qua. Một bản sao của biến được truyền trong một cuộc gọi theo giá trị. Thay đổi trong biến cũng ảnh hưởng đến giá trị của biến bên ngoài hàm.While calling a function, when we pass values by copying variables, it is known as “Call By Values.” In this method, a variable itself is passed. A copy of the variable is passed in a call by value. Change in the variable also affects the value of the variable outside the function.