我的代码:
def A():
a = 'A'
print a
return
def B():
print a + ' in B'
return
当B()输入到interpeter中时,我得到了
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "<module1>", line 9, in B
NameError: global name 'a' is not defined
我该如何定义?当B()输入解释器时,我希望最终结果为'A in B'
编辑: 如果可能的话,我想在A()中保留a的定义。
答案 0 :(得分:2)
def A():
global a
a = 'A'
print a
def B():
global a
print a + ' in B'
A()
B()
打印:
A
A in B
顺便说一句:你不需要在一个函数的末尾有一个简单的“返回”。
答案 1 :(得分:2)
我对Python很陌生,你可能想要了解下面的内容,但你是否考虑过将变量a和函数A()和B()作为类的成员? / p>
class myClass(object):
def __init__(self):
self.a = ''
def A(self):
self.a = 'A'
print self.a
def B(self):
print self.a + ' in B'
def main():
stuff = myClass()
stuff.A()
stuff.B()
if __name__ == '__main__':
main()
当我将上面的代码保存在文件中并运行它时,它似乎按预期工作。
答案 2 :(得分:0)
a = 'A'
def B():
print a + ' in B'
答案 3 :(得分:0)
您可以使用global
关键字
def A():
global a
a = 'A'
def B():
global a
# ...
然而,使用全局变量通常是一个坏主意 - 你确定没有更好的方法来做你想做的事吗?
答案 4 :(得分:0)
从this SO question查看我的答案。基本上是:
创建一个仅包含全局数据的新模块(在您的情况下,假设为myGlobals.py
):
# create an instance of some data you want to share across modules
a=0
然后您想要访问此数据的每个文件都可以这种方式执行此操作:
import myGlobals
myGlobals.a = 'something'
所以在你的情况下:
import myGlobals
def A():
myGlobals.a = 'A'
print myGlobals.a
def B():
print myGlobals.a + ' in B'
答案 5 :(得分:-1)
只需输入,不需要创建功能或类:
global a
a = 'A'
print a
print a + ' in B'