在开始执行程序逻辑之前,我很困惑地看到所有符号都没有得到解释器的审查。
例如,在此列表中:
def func_twice(f, x):
f(f(x))
def square(x):
return x * x
result = func_twice(square,2)
结果在全局框架中仍然不可见,直到在运行时进行评估。
并在此:
def f(x, y):
return g(x)
def g(a):
return a + y
f(1, 2)
y 在评估之前未进行语法检查。
如果有人说,这是由于解释语言性质,这就是它的方式,如何在python中编写企业应用程序,这可能有很多这样的程序员引入的错误,直到测试才能恢复?< / p>
答案 0 :(得分:0)
这是因为python没有变量声明。在此代码中,当我们声明函数y
时,我们不知道g
是否存在:
def f(x, y):
return g(x)
def g(a):
return a + y
y = 3
f(1, 2)
仅在调用g
时才检查,因为直到那时它才被人知道
答案 1 :(得分:0)
func_twice
未返回f(f(x))
的值;在没有明确的return语句的情况下,它返回None
。你想要
def func_twice(f, x):
return f(f(x))