python的lambda函数_Python-Lambda函数的范围及其参数?
我需要一個與一系列gui事件幾乎完全相同的回調函數。該函數的行為會有所不同,具體取決于調用該事件的事件。對我來說,這似乎是一個簡單的案例,但是我無法弄清楚lambda函數的這種奇怪行為。
因此,我在下面有以下簡化代碼:
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 funcList:
f()
此代碼的輸出是:
mi
mi
mi
do
re
mi
我期望:
do
re
mi
do
re
mi
為什么使用迭代器搞砸了?
我試過使用Deepcopy:
import copy
funcList=[]
for m in ('do', 're', 'mi'):
funcList.append(lambda: callback(copy.deepcopy(m)))
for f in funcList:
f()
但這有同樣的問題。
總結
以上是生活随笔為你收集整理的python的lambda函数_Python-Lambda函数的范围及其参数?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql group by having用
- 下一篇: c++ string 堆还是栈_5个刁钻