马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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赋值所以会报错
而不加括号返回的是函数本身
我个人感觉是这个意思
|