在函数内部分配变量

时间:2016-01-22 15:11:46

标签: python python-3.x main

这个问题可能是如此常见,以至于每隔一分钟就会被问到这个问题,但我已经试图寻找答案而无法找到答案。很可能我不能很好地表达这个问题。

无论如何,我正在制作一个小型文字游戏并且它有变量,为简单起见,我们说main。我有一个water = 100 def main(): while True: water -= 5 print(water) main() 循环函数。让我们说代码看起来像这样:

{{1}}

当然,当我运行这个程序时,它告诉我在赋值之前引用了变量。但是如果我在函数内部生成变量,那么循环的每次迭代都会将变量重置为原始变量。

那我该怎么做呢? 谢谢!

3 个答案:

答案 0 :(得分:3)

使用关键字global。在代码中,在循环之前在函数global water中声明,然后您的代码将正常工作。

答案 1 :(得分:1)

如果您想在不使用全局变量的情况下编写代码,您也可以编写代码以使用nonlocal变量。但是,这可能会让您更加困惑,也不适合您要做的事情。 PatNowak的回答鼓励您阅读global关键字。使用以下示例作为鼓励,还可以阅读不完全是本地或全局的变量。

def create_functions():
    water = 100

    def first_function():
        nonlocal water
        for _ in range(10):
            water -= 5
            print(water)

    def second_function(amount):
        nonlocal water
        water += amount
    return first_function, second_function

main, add_water = create_functions()

main()
add_water(25)
main()

答案 2 :(得分:1)

  

如果我在函数内部创建变量,那么每次迭代循环时它会将变量重置为原始变量。

???

def main():
    water = 100
    while water > 0:
        water -= 5
        print(water)

main()

输出:

95
90
85
80
75
70
65
60
55
50
45
40
35
30
25
20
15
10
5
0

See it working online