Tôi nghĩ nhiều người đã thấy hàm python nhận các tham số mặc định. Ví dụ:Tham số mặc định trong hàm Python
def foo(a=[]):
a.append(3)
return a
Nếu chúng ta gọi hàm này sử dụng foo(), sản lượng sẽ nối số nguyên '3' mỗi lần sau khi cuộc gọi.
Khi hàm này được xác định, đối tượng hàm có tên 'foo' được xác định trong môi trường hiện tại và các giá trị thông số mặc định được đánh giá tại thời điểm này. Mỗi khi hàm được gọi mà không có tham số, giá trị tham số được đánh giá sẽ được thay đổi theo mã.
Câu hỏi của tôi là, thông số được đánh giá này tồn tại ở đâu? Có trong đối tượng hàm hay trong đối tượng phương thức khi gọi hàm không? Vì mọi thứ trong python là một đối tượng, phải có một số vị trí để giữ giá trị name-> binding của tham số 'a' -> được đánh giá. Tôi có đang suy nghĩ quá mức về vấn đề này không?
Có, nhưng đâu là ánh xạ 'a' với' [] 'như OP đã hỏi? – MattH
@MattH đã cập nhật câu trả lời, cảm ơn. – bereal