我完全理解Python中不同作用域的概念,但我不能清楚地理解这段代码,所以如果有人能向我解释它,第18行的返回是什么意思,我会很高兴的。例如,它不应该是return g()吗?G是什么意思?它是一个变量吗?输出为0x15b43b0的z=function g,这意味着什么?
最后一件事是,最后一行中的z()是什么?没有函数叫做z!
def f(x):
def g():
x='abc'
print 'x=',x
def h():
z=x
print 'z=',z
x=x+1
print 'x=',x
h()
g()
print 'x=',x
return g
x=3
z=f(x)
print 'x=',x
print 'z=',z
z()发布于 2018-01-24 20:30:40
第18行的返回是什么意思?
它正在返回函数对象g本身。
例如,不应该返回g()吗?
不一定。传递函数是完全可以接受的,因为它们只是Python中的其他对象。return g和return g()都是有效的,意味着不同的东西。
G是什么意思?它是一个变量吗?
g是绑定到函数对象的名称,该函数对象在调用时打印x=abc,然后返回None。是的,g是一个变量(它是局部变量)。
输出为0x15b43b0的z=function g,这意味着什么?
这意味着名称z绑定到内存位置0x15b43b0的名为g的函数。(提示:它实际上是绑定到内部作用域中的名称g的同一个函数对象)
最后一件事是,最后一行中的z()是什么?
它意味着调用名称z所绑定的对象。也就是说,它调用f返回的函数。
没有称为z的函数。
这里没有__name__属性等于z的函数。但是名称z仍然可以绑定到函数对象。记住,对象可以有多个名称(或者根本没有名称)。
发布于 2018-01-24 20:27:42
g是用def定义的函数的名称。g()调用函数并给出结果,而g是函数对象本身的名称(引用)。
是的,有一个叫做z的函数。它等于调用f(x)返回的函数,即用arg x调用的函数f。这是与return g行相同的函数g
除了作用域外,您可能还需要检查高阶函数和闭包概念。
https://stackoverflow.com/questions/48430955
复制相似问题