|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 tame47 于 2020-3-22 10:06 编辑
小甲鱼在课上举的例子。第一个例子,如果在最后的FunY后加()就会报错。第二个例子,不加()反而无法计算出结果。这是为什么,两个例子有什么不同?谢谢。
- >>> def FunX(x):
- def FunY(y):
- return x * y
- return FunY() #这里加了()之后就会报错
- >>> FunX(5)(6)
- Traceback (most recent call last):
- File "<pyshell#54>", line 1, in <module>
- FunX(5)(6)
- File "<pyshell#53>", line 4, in FunX
- return FunY() #这里加了()之后就会报错
- TypeError: FunY() missing 1 required positional argument: 'y'
复制代码
- >>> def Fun1(): #这是第二个例子
- x = 5
- def Fun2():
- nonlocal x
- x *= x
- return x
- return Fun2 #这里没有()就会报错
- >>> Fun1()
- <function Fun1.<locals>.Fun2 at 0x03FBBF10>
复制代码
我也是新学,个人理解如果加了括号返回的就是FunY的函数值,但是并没有给y赋值所以会报错
而不加括号返回的是函数本身
我个人感觉是这个意思
|
|