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