While循环修改全局变量

时间:2019-11-18 09:22:39

标签: python variables gspread

我认为python中的循环不会改变我们的全局变量;但是,下面的代码给出10。有人可以解释这里发生了什么吗?

source_col_numbers = 9
i = 1
columns = {}

while i <= source_col_numbers:
    columns[i] = list(filter(None , source.sheet1.col_values(i)))
    i += 1

print(i)

2 个答案:

答案 0 :(得分:1)

您已将i声明为全局变量,然后在循环中使用它。 因此,您在程序中对i所做的任何更改都将应用于该i,因为它是全局变量。

全局变量表示i具有全局范围。如果您在函数内部创建了i,则它将具有本地作用域,并且无法在函数外部访问。

因此,在您的情况下,将进行更改,输出将为10

答案 1 :(得分:0)

循环确实会更改全局变量,因此对于循环的每次迭代,i将增加1。