Python dùng cơ chế thường gọi là pass-by-object-reference (hay "call by assignment"): mỗi tham số được gán vào đúng object mà caller truyền vào — không copy object, cũng không phải pass-by-reference kiểu C++.
Hệ quả tùy object là mutable hay không:
- Mutable (list, dict, set): sửa tại chỗ (.append, gán phần tử) → caller thấy thay đổi.
- Rebind (gán lại tên tham số) → chỉ đổi tên local, caller không thấy.
- Immutable (int, str, tuple): mọi phép "đổi" thực ra tạo object mới, bản gốc không đổi.
python
def f(xs, n):
xs.append(1) # mutate → caller thấy
n = n + 1 # rebind → caller không thấy