期望exception_sender
应更改为not default
但是当调用handleException函数时,
excepthook仍然是default
我怎样才能更改b.py
中的值exception_sender = "default"
def handleException(excType, excValue, trace):
notification.sender = exception_sender
def register_exception_sender(sender):
exception_sender = sender
sys.excepthook = handleException
import a
register_exception_sender("not default")
1/0
答案 0 :(得分:0)
与使用关键字global
一样糟糕,它可以在这里完成这项工作。
def register_exception_sender(sender):
global exception_sender
exception_sender = sender
global exception_sender
告诉Python修改全局空间中的exception_sender
而不是仅修改函数中的handleException
。这个全局空间是b.py
从中读取它的地方。
但是,如果您的所有功能都在设置该值,那么您也可以在文件a.exception_sender = "not default"
中执行此操作:
a
它也在{{1}}的全局空间中设置名称,并且更加干净和可读。