我对python中的全局范围有一个疑问。
我制作此脚本并有效,但我不知道为什么:
#! /bin/python3
# -*- coding: UTF-8 -*-
data = []
stats = {'white':0, }
def main():
global data
with open(args.finput, 'r') as f:
data = f.readlines()
rwhitespaces()
with open(foutput, 'w') as f:
for line in data:
f.write(line)
print(stats)
def rwhitespaces():
cnt = 0
for line in data:
if line == 'n':
data.pop(cnt) # Modifing data var without global keywork and works, why??
stats['fistro'] = 1 # Modifing stats var without global keywork and works why??
cnt += 1
if __name__ == "__main__":
main()
所以我误解了全球范围的某些东西,有人可以解释我吗???谢谢,对不起,我的英语不好
这起作用,因为您不是在更改参考,而是访问可变对象,并使其在自身上执行更改。
global
需要为全球范围范围的变量(x = blah
)分配一个新值,但不需要访问一个值。就像当您执行data.pop(cnt)
时,您要做的就是访问变量,您可以在不使用global
关键字的情况下进行。
简而言之,它与对象的更改属性无关,它是对象的 sigsmentment 。