python 作用域与带有循环变量的默认参数比较
来源:互联网 发布:上海服务贸易数据 编辑:程序博客网 时间:2024/05/21 06:37
def makeActions():
acts=[]
for i in range(5):
acts.append(lambda x: i ** x)
acts=[]
for i in range(5):
acts.append(lambda x: i ** x)
return acts
acts = makeActions()
acts[0](2)=16------>看起来貌似应该是 0^2 = 1
acts[1](2)=16------>看起来貌似应该是 1^2 = 1
acts[3](2)=16------>看起来貌似应该是 3^2 = 9
所有的acts中的变量i都是i循环之后的最后值 4,因为嵌套作用域中的变量在嵌套函数调用时才进行查找
,所以实际记住的都是同样的值。 但是经过以下修改之后会有所不同:
def makeActions():
acts=[]
for i in range(5):
acts.append(lambda x, i=i: i ** x)
return acts
acts = makeActions()
acts[0](2)=1
acts[1](2)=1
acts[3](2)=9
注:默认参数是在嵌套函数创建时评估的而不是在稍后调用时,每个函数记住了自己的变量i值。
- python 作用域与带有循环变量的默认参数比较
- Python作用域与带有循环变量的默认参数相比较
- js 默认的参数、可变的参数、变量作用域
- js 默认的参数、可变的参数、变量作用域
- Python循环中的变量作用域的灵异现象
- 带有默认参数的构造函数
- C++ 带有默认参数的虚函数
- python的变量作用域
- Python:变量的作用域
- python-变量的作用域
- Python变量的作用域
- python变量的作用域
- python的变量作用域
- Python的变量作用域
- for循环变量作用域的范围
- python的闭包与变量作用域
- 讲解Python中for循环下的索引变量的作用域
- Python函数与变量作用域
- 使用VNC实现LINUX与windows的相互远程控制
- 写的比较好的存储过程备份
- Android Bluetooth Data Reception and Sending
- 分享一些C语言的学习资料
- AngularJS
- python 作用域与带有循环变量的默认参数比较
- Android系统层的input设备从上到下分析~
- 使用NSURLConnection教程
- 用户界面设计小Quiz——缺省值问题
- 落花的伤感心情日志分享:梦未开,心已缺,落日流年茫
- 如何实现OV9650摄像头拍照
- jquery与php的json交互2
- ov9650 的调试 来自网络
- Unity3d 在移动设备上的摇杆控制 C#