在Python中,全局对象是指在模块级别定义的对象,它们可以在整个模块中被访问。如果你想从另一个全局对象构造一个可变的全局对象,你可以直接在模块级别进行赋值操作。
global_list = []
global_dict = {}
global_set = set()
假设你有一个配置文件,你希望在程序的不同部分中使用这些配置,你可以将这些配置存储在一个全局字典中。
# config.py
GLOBAL_CONFIG = {
'debug': True,
'log_level': 'INFO',
'database': {
'host': 'localhost',
'port': 5432,
'name': 'mydb'
}
}
在其他模块中,你可以这样使用:
# main.py
import config
def main():
if config.GLOBAL_CONFIG['debug']:
print("Debug mode is on")
# ... 其他逻辑
if __name__ == "__main__":
main()
当你修改一个全局对象时,由于所有模块共享同一个全局对象的引用,所以在一个模块中的修改会反映到其他所有模块中。
# module_a.py
GLOBAL_LIST = []
def add_item(item):
GLOBAL_LIST.append(item)
# module_b.py
import module_a
def print_items():
print(module_a.GLOBAL_LIST)
# 在某个地方调用
module_a.add_item('item1')
module_b.print_items() # 输出: ['item1']
全局对象在Python中是模块级别的变量,所有导入该模块的代码都会共享这个变量的引用。
如果你不希望一个模块的修改影响到其他模块,可以考虑以下几种方法:
copy.deepcopy()
来创建全局对象的副本。# 使用深拷贝
import copy
GLOBAL_CONFIG_COPY = copy.deepcopy(config.GLOBAL_CONFIG)
# 现在修改GLOBAL_CONFIG_COPY不会影响原始的GLOBAL_CONFIG
领取专属 10元无门槛券
手把手带您无忧上云