python的lambda函数_Python-Lambda函数的范围及其参数?
我需要一個(gè)與一系列g(shù)ui事件幾乎完全相同的回調(diào)函數(shù)。該函數(shù)的行為會(huì)有所不同,具體取決于調(diào)用該事件的事件。對(duì)我來說,這似乎是一個(gè)簡(jiǎn)單的案例,但是我無法弄清楚lambda函數(shù)的這種奇怪行為。
因此,我在下面有以下簡(jiǎn)化代碼:
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()
但這有同樣的問題。
總結(jié)
以上是生活随笔為你收集整理的python的lambda函数_Python-Lambda函数的范围及其参数?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql group by having用
- 下一篇: python中文字符_python处理中