def call(arg):
return a+arg
def caller():
a=1
call(2)
caller()
它返回:全局名称' a'未定义
答案 0 :(得分:0)
您需要在方法定义之外定义a
。在上面的代码中,变量a是方法caller
的本地代码,通过在方法定义之外定义它,为它提供全局范围。
你得到的错误是因为python正在寻找具有全局范围的东西,因此它说全局名称'a'没有被定义。
下面的代码适用于python小提琴。
def call(arg):
return a+arg
def caller():
print call(2)
a=1
caller()
答案 1 :(得分:0)
变量a
在函数caller
中定义。因此,访问a
函数中的caller
可以正常工作。在函数call
中,未定义变量a
,因此Python引发了异常。
您可以通过以下两种方法之一解决此问题:
a
函数(首选)或arg
作为参数与call
一起传递
a
定义为全局变量。 (不是首选)因为全局变量被认为是一种不好的做法。尝试重新定义功能call function
,如
def call(a, arg):
return a + arg
答案 2 :(得分:0)
这是一个不好的例子。它看起来更像是:
def cycle():
for item in {'a':1,'b':2,'c':3}:
do('a')
def do(arg):
if item.get(arg):
pass
我不能使用类,因为我使用的框架不支持继承。