lambda表達式的變量作用域


1)lambda表達式等價於一個小函數,表達式的值就是函數的返回值。 
2)可以給lambda表達式起名字,也可以不起名字。
3)在lambda表達式中使用沒有定義的變量,默認是全局變量。

 

這里就進行演示一下為什么lambda上面的定義:

# -*- coding: utf-8 -*-
# @Time    : 2018/12/4 17:41
# @Author  : lh
# @Email   : 22@qq.com
# @File    : lambda_test.py
# @Software: PyCharm




r = []
for x in range(10):
    r.append(lambda: x**2)

print(r[0](), r[2](), r[5](), r[6](), r[9]())

你會發現wu無論是r[0](),還是 r[2](), r[5](), 還是r[6](), r[9]()輸出都是:81 81 81 81 81

因為在lambda表達式中使用沒有定義的變量,默認是全局變量。

所以如果你想正常輸出0-9的平方的結果還是要在lambda中定義一個變量,這樣才是一個局部變量。

這是示例:

r = []
for i in range(10):
    # 定義一個lambda表達式
    r.append(lambda n=i: n**2)
print(r[0](), r[1](),r[2]())

這樣輸出結果才不會是都是一樣的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM