python如何解析和评估这些程序?

时间:2013-02-24 15:28:36

标签: python

在开始执行程序逻辑之前,我很困惑地看到所有符号都没有得到解释器的审查。

例如,在此列表中:

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>

2 个答案:

答案 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))