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

Cách truyền tham số theo giá trị (by value) trong hàm Python

Python không hỗ trợ truyền tham số theo giá trị thuần túy như C/C++. Tuy nhiên, với các đối tượng immutable (int, float, string, tuple...), hành vi trông giống như "pass by value" vì bạn không thể thay đổi đối tượng gốc.

Ví dụ

def foo(x):
    x = 30  # Gán lại x cho đối tượng mới
    print("Inside function:", x)

a = ["10"]  # list - mutable
foo(a)
print("Outside function:", a)  # Không thay đổi nếu gán lại, nhưng có thể sửa đổi nội dung

# Với immutable:
def bar(y):
    y = 30
    print("Inside:", y)

b = 10
bar(b)
print("Outside:", b)  # Vẫn là 10

Đầu ra

Inside function: 30
Outside function: ['10']
Inside: 30
Outside: 10

Giải thích

  • Khi gán lại tham số (x = 30), Python tạo một đối tượng mới cục bộ, không ảnh hưởng đến đối tượng gốc.
  • Với immutable (int, string...), bạn không thể sửa đổi đối tượng gốc -> hành vi giống pass-by-value.
  • Với mutable (list, dict...), bạn có thể sửa đổi nội dung (append, update...) -> hành vi giống pass-by-reference.

Kết luận: Python dùng "Call by Object Reference". Hành vi "by value" chỉ xuất hiện khi làm việc với immutable objects và gán lại tham số.