[英]Are functions and helper functions treated differently in python?
在这里,主 function 是 g(x),辅助 function 是 h()。 我注意到我可以得到 g(3) 的 output,只需绑定 x=3 然后执行三个中的任何一个
但另一方面,我注意到只有当我键入“print(h())”时才会输出 h()。 我的观察是正确的还是我犯了错误? 这种奇怪的歧视背后的逻辑是什么?
我喜欢这样想。 通常,如果你有像“5”或“x=5”这样的行,python 不会给出 5 的 output。但是函数被赋予了一个特殊的功能,它们可以通过 3 种方式中的任何一种来调用。 只是在辅助函数的情况下,这个特殊功能被“撤回”
您编写的代码相当于:
def g(x):
def h():
any_name_you_want = 'abc'
return any_name_you_want
x += 1
print("in g(x)", x)
print(h())
return x
您不能分配给 function 内的非局部变量。 当 Python 为h
创建命名空间时, x
对h
是本地的,因为分配需要 python 在运行时为 x 添加命名空间。
因此,您的代码也相当于:
def g(x):
def h():
return 'abc'
x += 1
print("in g(x)", x)
print(h())
return x
要了解正在发生的事情,请运行以下命令,然后阅读UnboundLocalError
:
def g(x):
def h():
x = x
return x
x += 1
print("in g(x)", x)
print(h())
return x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.