Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách truyền tham số theo tham chiếu (by reference) trong hàm Python

Trong Python, các đối số hàm luôn được truyền theo tham chiếu (call by object reference). Điều này có thể kiểm tra bằng cách so sánh id() của đối số thực tế, đối số hình thức và đối tượng trả về.

Ví dụ minh họa

def foo(x):
    print("id of received argument", id(x))
    x.append("20")
    return x

a = ["10"]
print("id of argument before calling function", id(a))
b = foo(a)
print("id of returned object", id(b))
print(b)
print(a)

Đầu ra

id of argument before calling function 1475589299912
id of received argument 1475589299912
id of returned object 1475589299912
['10', '20']
['10', '20']

Giải thích

  • Ba giá trị id() của a, x bên trong foo() và b là giống nhau.
  • Khi x.append("20") được thực hiện, nó sửa đổi trực tiếp đối tượng list gốc mà a tham chiếu tới.
  • Do đó, cả a và b đều phản ánh thay đổi.

Lưu ý: Python sử dụng cơ chế "Call by Object Reference". Với đối tượng immutable (tuple, string, int...), bạn không thể thay đổi giá trị gốc; với đối tượng mutable (list, dict...), bạn có thể sửa đổi nội dung.