函数内的函数 Python
A function inside a function Python
这个问题之前有人问过,但是我实在看不懂其他对这类问题的解释,所以我在这里重写一下,详细点。在学习的过程中遇到了这种我一点都不熟悉的代码。。我无法理解如何在f()函数中解释这个g()函数!为什么 g() 中 x = 10 和 y = z*w 的代码段不 运行 ?它只打印我给的 y 的值,用 5 调用 f() !
x = 99
def f(y):
w = x + y
def g():
x = 10
y = z * w
print y
f(5)
尽管您在函数 f()
中定义了函数 g()
,但您从未真正调用过它。您还需要在 f()
函数中调用它。
在Python中,def
是一个语句:接受一个函数名,可能是参数,然后是一个缩进的函数体——将它全部编译成一个函数对象,它绑定到给定的def
出现范围内的名称(此处为 f
本地)。
所以你问 "Why the piece of code inside g() where x = 10 and y = z*w does not run" -- 很简单,因为你从不调用 g
!
g
是 f
本地的(或者也称为 "nested in f
")这一事实与此无关。
无论是本地还是全局,任何时候您 def g
但从未调用 g
,g
主体中的代码将不会执行。
顺便说一下,这是 Python 与我听说过的所有其他语言一致的细节。如果定义了一个函数(某些语言称之为 "declared")并且 从未 被调用,那么该函数的主体代码永远不会运行。您是否听说过任何其他语言 - 即执行已定义但从未调用的函数的代码体?!
函数 g()
从未在 f(y)
函数内部被调用。为了让您的代码正常工作,它应该看起来像这样。
x = 99
def f(y):
w = x + y
def g():
x = 10
y = z * w
g(y) # <---- notice the function call for g().
print y
f(5)
这个问题之前有人问过,但是我实在看不懂其他对这类问题的解释,所以我在这里重写一下,详细点。在学习的过程中遇到了这种我一点都不熟悉的代码。。我无法理解如何在f()函数中解释这个g()函数!为什么 g() 中 x = 10 和 y = z*w 的代码段不 运行 ?它只打印我给的 y 的值,用 5 调用 f() !
x = 99
def f(y):
w = x + y
def g():
x = 10
y = z * w
print y
f(5)
尽管您在函数 f()
中定义了函数 g()
,但您从未真正调用过它。您还需要在 f()
函数中调用它。
在Python中,def
是一个语句:接受一个函数名,可能是参数,然后是一个缩进的函数体——将它全部编译成一个函数对象,它绑定到给定的def
出现范围内的名称(此处为 f
本地)。
所以你问 "Why the piece of code inside g() where x = 10 and y = z*w does not run" -- 很简单,因为你从不调用 g
!
g
是 f
本地的(或者也称为 "nested in f
")这一事实与此无关。
无论是本地还是全局,任何时候您 def g
但从未调用 g
,g
主体中的代码将不会执行。
顺便说一下,这是 Python 与我听说过的所有其他语言一致的细节。如果定义了一个函数(某些语言称之为 "declared")并且 从未 被调用,那么该函数的主体代码永远不会运行。您是否听说过任何其他语言 - 即执行已定义但从未调用的函数的代码体?!
函数 g()
从未在 f(y)
函数内部被调用。为了让您的代码正常工作,它应该看起来像这样。
x = 99
def f(y):
w = x + y
def g():
x = 10
y = z * w
g(y) # <---- notice the function call for g().
print y
f(5)