如何在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

总结:直接赋值改属性就行。


回到顶部