Python:如何在其他函数中使用来自一个函数的命名变量

Python:如何在其他函数中使用来自一个函数的命名变量,python,function,python-3.x,global-variables,Python,Function,Python 3.x,Global Variables,我是一个新手程序员,试图用Python 3.3.2编写一个程序,它有一个main()函数,调用function1(),然后循环function2()和function3() 我的代码通常如下所示: def function1(): print("hello") def function2(): name = input("Enter name: ") def function3(): print(name) def main(): function1()

我是一个新手程序员,试图用Python 3.3.2编写一个程序,它有一个
main()
函数,调用
function1()
,然后循环
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
关键字将其声明为global-inside。尽管如此,这几乎总是一个坏主意,因为您最终会在全局状态中创建所有可怕的错误。

我尝试了这个方法,但现在它返回了一个错误:
Traceback(最近一次调用):文件“I:\School\ITEC 1150-02\Address book group assignment\TEAMLAB2.py”,第43行,在一个()main()文件中“I:\School\ITEC 1150-02\Address book group assignment\TEAMLAB2.py”,第37行,在main function2()名称中错误:全局名称“function2()”未定义
无所谓,我已将其使用;使用了
self.function2()
而不是
function2()
。谢谢!