-1

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

例如,在此清单中:

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编写企业应用程序,它可能有许多程序员引入的此类错误,直到测试才能恢复?

4

2 回答 2

0

这是因为 python 没有变量声明。在这段代码中,我们在声明函数时不知道是否y存在g

def f(x, y):
   return g(x)

def g(a):
   return a + y

y = 3
f(1, 2)

仅在调用时g对其进行检查,因为在此之前无法知道

于 2013-02-24T15:54:31.683 回答
0

func_twice没有返回f(f(x));的值 它None在没有明确的 return 语句的情况下返回。你要

def func_twice(f, x):
    return f(f(x))
于 2013-02-24T15:54:47.107 回答