我是一个新手程序员,试图使用Python 3.3.2制作一个程序,该程序具有调用function1()
的main()
函数,然后循环function2()
和function3()
。
我的代码通常如下所示:
def function1():
print("hello")
def function2():
name = input("Enter name: ")
def function3():
print(name)
def main():
function1()
while True:
funtion2()
function3()
if name == "":
break
main()
目前,当我运行程序并输入名称时,我收到以下错误:
NameError: global name 'name' is not defined
我知道这是因为name
仅在function2()
中定义。我如何使name
被定义为"全局名称",或者以某种方式能够在function3()
和main()
中使用它。
提前谢谢。
不要尝试将其定义为全局变量,而是返回它:
def function2():
name = input("Enter name: ")
return name
def function3():
print(function2())
如果要使用函数中定义的变量在所有函数中可用,请使用类:
class A(object):
def function1(self):
print("hello")
def function2(self):
self.name = input("Enter name: ")
def function3():
print(self.name)
def main(self):
self.function1()
while True:
funtion2()
function3()
if not self.name:
break
A().main()
在函数外部定义变量,然后首先使用 global
关键字将其声明为全局变量。虽然,这几乎总是一个坏主意,因为您最终会使用全局状态创建所有可怕的错误。