Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ฟังก์ชันแบบเรียกซ้ำใน Python จะสร้างเนมสเปซใหม่ทุกครั้งที่ฟังก์ชันเรียกตัวเองหรือไม่?


ใช่ การเรียกใช้ฟังก์ชัน (การเรียกใช้ฟังก์ชันใดๆ ไม่ใช่แค่การเรียกซ้ำ) จะสร้างเนมสเปซใหม่ แต่เมื่อกำหนดเป็นพารามิเตอร์ วัตถุจะถูกส่งผ่านโดยการอ้างอิง

ดังนั้น เนมสเปซใหม่จะได้รับสำเนาของข้อมูลอ้างอิงนี้เอง แต่ยังคงอ้างอิงถึงวัตถุเดียวกันกับในฟังก์ชันการเรียก และหากคุณเปลี่ยนเนื้อหาของวัตถุนั้น คุณจะสังเกตเห็นการเปลี่ยนแปลงในฟังก์ชันการเรียก

เพื่อให้มีความเฉพาะเจาะจงมากขึ้น เมื่อใดก็ตามที่ล่ามพบการเรียกใช้ฟังก์ชัน ล่ามจะสร้างวัตถุเฟรมซึ่งถูกผลักไปที่เฟรมสแต็ก ทุกครั้งที่สร้างเฟรม เฟรมนั้นจะได้รับเนมสเปซส่วนตัว โดยที่ตัวแปรแต่ละตัวในเฟรมจะถูกกำหนดใหม่