Computer >> Máy Tính >  >> Lập trình >> Python

Các hàm đệ quy trong Python có tạo một không gian tên mới mỗi khi hàm gọi chính nó không?

Đúng vậy, một lệnh gọi hàm (bất kỳ lệnh gọi hàm nào, không chỉ lệnh gọi đệ quy) sẽ tạo ra một không gian tên mới. NHƯNG, khi được cung cấp dưới dạng tham số, OBJECTS được chuyển qua tham chiếu.

Vì vậy, không gian tên mới nhận được bản sao của chính nó của tham chiếu này nhưng nó vẫn tham chiếu đến cùng một đối tượng như trong hàm gọi và nếu bạn thay đổi nội dung của đối tượng đó, bạn sẽ nhận thấy sự thay đổi trong hàm gọi.

Cụ thể hơn, Bất cứ khi nào Trình thông dịch gặp một lệnh gọi đến một hàm, nó sẽ tạo ra một đối tượng khung, đối tượng này được đẩy vào một ngăn xếp khung. Mỗi khi một khung được tạo, khung đó được cung cấp không gian tên riêng của chính nó, nơi mỗi biến trong khung được xác định lại.