Bun*_*gow 1 python global-variables python-3.x
我对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()
Run Code Online (Sandbox Code Playgroud)
所以我误解了具有全球范围的东西可以有人解释我吗??? 谢谢,抱歉我的英语不好
这是有效的,因为您没有更改引用,而是访问可变对象,并让它自己执行更改.
global需要为全局范围的变量(x = blah)分配新值,但不需要仅访问一个.正如您所做的那样,当您data.pop(cnt)访问变量时,您可以在不使用global关键字的情况下执行此操作.
简而言之,它不是关于改变对象的属性,而是关于将对象赋值给变量.