更改全局范围对象



我对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

相关内容

  • 没有找到相关文章

最新更新