我是一名新手程序员,试图使用Python 3.3.2创建一个程序,该程序具有调用main()
的{{1}}函数,然后循环function1()
和{{1} }。
我的代码通常如下所示:
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
中使用它。
提前致谢。
答案 0 :(得分:4)
不要试图将其定义为全局变量,而是将其返回:
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()
答案 1 :(得分:2)
在函数之外定义变量,然后使用global
关键字将其首先声明为全局内部。虽然,这几乎总是一个坏主意,因为你最终会在全球状态下创造所有可怕的错误。