如何在Python中实现在外部导入时对导入对象进行修改?
config.py 中定义了字典 config,在外部 from config import config 时需要修改 config[‘password’]的值
如何在Python中实现在外部导入时对导入对象进行修改?
2 回复
在Python里,想在外面导入的时候改东西,直接改模块属性就行。比如你有个模块 my_module.py:
# my_module.py
value = "original"
然后你在主程序里可以这么干:
# main.py
import my_module
print("Before:", my_module.value) # 输出: Before: original
my_module.value = "modified"
print("After:", my_module.value) # 输出: After: modified
如果你要改的是函数或者类,直接重新赋值就行。比如:
# my_module.py
def original_func():
return "original"
# main.py
import my_module
def new_func():
return "patched"
my_module.original_func = new_func
更狠一点,想改其他模块导入的东西,用 sys.modules 或者猴子补丁。比如要改 requests.get:
import requests
import sys
original_get = requests.get
def patched_get(*args, **kwargs):
print("Patched!")
return original_get(*args, **kwargs)
requests.get = patched_get
# 或者 sys.modules['requests'].get = patched_get
总结:直接赋值改属性就行。

