【发布时间】:2014-02-04 08:26:32
【问题描述】:
这里是新手。
此代码在 python 2.7 中有效,但在 3.3 中无效
def extractFromZipFiles(zipFiles, files, toPath):
extractFunction = lambda fileName:zipFiles.extract(fileName, toPath)
map (extractFunction,files)
return
没有错误,但文件未解压缩。但是,当我用 for 循环替换时,效果很好。
def extractFromZipFiles(zipFiles, files, toPath):
for fn in files:
zipFiles.extract(fn, toPath)
# extractFunction = lambda fileName:zipFiles.extract(fileName, toPath)
# map (extractFunction,files)
return
代码不会出错。
【问题讨论】:
-
因为它只是一个生成器
-
老实说,只需使用
for循环。这方式对路人来说更明确,你到底在做什么。 -
在 Python2 中,该 map 调用正在创建一个
Nones 列表,这是毫无意义的,不鼓励使用。 for 循环更干净。我不知道为什么人们很难写出两行好的代码,而一个蹩脚的代码就行了。 -
@gnibbler,有一个相当广泛的误解,即“pythonic”的意思是“非常短的单线”。虽然它们可以经常重叠,但在这种情况下很明显它们并不总是
-
@mhlester,是的,向他人传授这个(和其他好习惯)是此类网站的一项重要功能。
标签: python functional-programming