global关键字
如果你想在局部作用域中修改全局变量,可以基于global关键字进行实现
默认情况下,在局部变量作用域只能对全局变量进行:
读取和修改内部元素(可变类型),无法对全局变量进行重新赋值
- 读取
COUNTRY = '中国'
TRY_LISTS = ["北京", "上海", "深圳"]def get_country():print(COUNTRY)if __name__ == '__main__':get_country()
- 修改内部变量
COUNTRY = '中国'
TRY_LISTS = ["北京", "上海", "深圳"]def update_country_lists():TRY_LISTS[0] = '河北'print(TRY_LISTS)if __name__ == '__main__':update_country_lists()
如果重新赋值话相当于又在局部作用域中重新开辟了一块内存为COUNTRY,但是并没有改变全局变量的值
COUNTRY = '中国'
TRY_LISTS = ["北京", "上海", "深圳"]def get_country():COUNTRY = "美国"print(COUNTRY)def update_country_lists():TRY_LISTS[0] = '河北'print(TRY_LISTS)print(COUNTRY)
print(TRY_LISTS)if __name__ == '__main__':get_country()update_country_lists()结果:
中国
['北京', '上海', '深圳']
美国
['河北', '上海', '深圳']
但是如果加上了global关键字后既可以对全局变量的值进行修改
COUNTRY = '中国'
TRY_LISTS = ["北京", "上海", "深圳"]def get_country():global COUNTRYCOUNTRY = "美国"print(COUNTRY)def update_country_lists():global TRY_LISTSTRY_LISTS = ['河北', '河南', '山东']print(TRY_LISTS)if __name__ == '__main__':get_country()update_country_lists()print(COUNTRY)print(TRY_LISTS)
如上面的内容所示:在局部作用域中使用global关键字后可以重新赋值全局变量.
个人笔记,如有错误还请各位大佬基于更正,谢谢