Python: How to use named variables from one function in other functions

北战南征 提交于 2019-12-31 01:48:19

问题


I'm a newbie programmer trying to make a program, using Python 3.3.2, that has a main() function which calls function1(), then loops function2() and function3().

My code generally looks like this:

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()

Currently, I get the following error when I run the program and enter a name:

NameError: global name 'name' is not defined

I understand that this is because name is only defined within function2(). How do I make it so that name is defined as a 'global name', or somehow be able to use it within function3() and main().

Thanks in advance.


回答1:


Don't try to define it a global variable, return it instead:

def function2():
    name = input("Enter name: ")
    return name

def function3():
    print(function2())

If you want to use variables defined in function to be available across all functions then use a class:

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()



回答2:


Define the variable outside of your functions, and then declare it first as global inside with the global keyword. Although, this is almost always a bad idea because of all of the horrendous bugs you'll end up creating with global state.



来源:https://stackoverflow.com/questions/19946448/python-how-to-use-named-variables-from-one-function-in-other-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!