คำถามติดแท็ก lexical-closures

10
ขอบเขตของฟังก์ชันแลมด้าและพารามิเตอร์?
ฉันต้องการฟังก์ชั่นการโทรกลับที่เกือบจะเหมือนกันทุกประการสำหรับชุดกิจกรรม gui ฟังก์ชันจะทำงานแตกต่างกันเล็กน้อยขึ้นอยู่กับเหตุการณ์ที่เรียกมัน ดูเหมือนจะเป็นกรณีธรรมดาสำหรับฉัน แต่ฉันไม่สามารถเข้าใจพฤติกรรมแปลก ๆ ของฟังก์ชันแลมด้านี้ได้ ดังนั้นฉันจึงมีโค้ดแบบง่ายต่อไปนี้ด้านล่าง: def callback(msg): print msg #creating a list of function handles with an iterator funcList=[] for m in ('do', 're', 'mi'): funcList.append(lambda: callback(m)) for f in funcList: f() #create one at a time funcList=[] funcList.append(lambda: callback('do')) funcList.append(lambda: callback('re')) funcList.append(lambda: callback('mi')) for f in …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.