分配给变量的函数?
Function assigned to a variable?
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)
z()
return f() 的值被分配给变量 z 发生这种情况时它调用函数 f() 我到目前为止理解但是 z() 如何直接 returns 值 return由 f 编辑?你能简单解释一下吗?
您已经有效地创建了一个指向函数 f(x) 的指针(在变量 z 中)。因此调用 z() 会调用 f(x)。因为 f(x) returns g,z() 也会 return g,因为调用 z() 会执行 f(x).
您将 f()
调用的 返回值 分配给 z
。
您 不 将 f
分配给 z
。
因此调用 z()
只会执行返回的内部 g
函数 - 而不是整个 f
.
在 z = f()
上,您得到 f
的打印输出,然后 g
作为函数返回。在连续调用 z()
时,您直接执行内部 g
函数。
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)
z()
return f() 的值被分配给变量 z 发生这种情况时它调用函数 f() 我到目前为止理解但是 z() 如何直接 returns 值 return由 f 编辑?你能简单解释一下吗?
您已经有效地创建了一个指向函数 f(x) 的指针(在变量 z 中)。因此调用 z() 会调用 f(x)。因为 f(x) returns g,z() 也会 return g,因为调用 z() 会执行 f(x).
您将 f()
调用的 返回值 分配给 z
。
您 不 将 f
分配给 z
。
因此调用 z()
只会执行返回的内部 g
函数 - 而不是整个 f
.
在 z = f()
上,您得到 f
的打印输出,然后 g
作为函数返回。在连续调用 z()
时,您直接执行内部 g
函数。