程序员《做与学系列》

疯狂的Python-09(没脑子的函数)

2018-09-08  本文已影响2人  景行1023

一些有趣的鲜为人知的Python特性集合

无论你是Python新手还是Python老手,我相信,这个系列的文章都会让你获益良多!

阅读此系列任何文章前请务必观看:疯狂的Python-目录大纲


▶ 没脑子的函数

funcs = []
results = []
for x in range(7):
    def some_func():
        return x
    funcs.append(some_func)
    results.append(some_func())

funcs_results = [func() for func in funcs]

Output:

>>> results
[0, 1, 2, 3, 4, 5, 6]
>>> funcs_results
[6, 6, 6, 6, 6, 6, 6]

虽然我们每次把some_func函数加入到funcs列表里的时候x都不一样,但是funcs列表里的所有函数都返回了6.

//下面这段代码也是这样

>>> powers_of_x = [lambda x: x**i for i in range(10)]
>>> [f(2) for f in powers_of_x]
[512, 512, 512, 512, 512, 512, 512, 512, 512, 512]

:bulb: 解释


上一篇下一篇

猜你喜欢

热点阅读