Skip to main content
 首页 » 编程设计

python之你如何在一个函数中定义一个变量并在第一个函数识别它的情况下在另一个函数中更改它

2025年05月04日14wuhuacong

我将如何创建一个函数,其中一个变量(退出)确定“while”循环是否运行,并能够在不同的函数中更改它,以便第一个函数中的 while 循环停止

    while exit == 0: 
       option = (raw_input("What would you like to do? ")) 
       if option == exit: 
          exit() 
    def exit(): 
       exit = 1 

这只是我正在尝试做的一个例子。

当我尝试运行它时,它不会离开 while 循环,这样做也不会结束程序。我怎样才能使 while 循环识别出 exit 现在是 1 并离开循环? 抱歉,如果问题不是很好,因为这是我第一次使用 stackoverflow 提问。

补充:我想知道如何跨函数更改变量,因为我将在程序的某些部分执行此操作。此外,我将在退出前保存数据,这就是为什么我在不同的函数中使用“退出”

请您参考如下方法:

这里的问题是范围 - exit 是函数 exit() 的局部变量,因此不会影响循环中的变量 exit范围。

更好的解决方案是:

exit = False 
while not exit: 
    option = raw_input("What would you like to do?") 
    if option == "exit": 
        exit = True 

或者简单地说:

while True: 
    option = raw_input("What would you like to do?") 
    if option == "exit": 
        break 

请注意在 1 和 0 上使用 True 和 False - 这更符合 Python 风格,因为你的意思是这里是真值,而不是整数。我还更改为与字符串 "exit" 进行比较,因为我认为这就是您想要的,而不是将用户输入与 exit 的值进行比较。

如果您的问题是您想要拥有相同的作用域,您可能希望让您的代码成为类的一部分。

class Doer: #Naturally, give it a real name based on it's purpose. 
    def __init__(self): 
        self.exit = False 
        while not self.exit: 
            option = raw_input("What would you like to do?") 
            if option == "exit": 
                self.exit() 
 
    def exit(self): 
        self.exit = True 

这里 exit 是一个实例变量(因此从 self 访问)因此两次我们都引用同一个变量。

如果您的代码不是对更复杂问题的简化,那么这在很大程度上是矫枉过正,因为第一个解决方案会更合适。