我怎么能动态更改钩子函数中的变量

时间:2015-11-17 10:03:52

标签: python

期望exception_sender应更改为not default 但是当调用handleException函数时, excepthook仍然是default

我怎样才能更改b.py

中的值

a.py

exception_sender = "default"

def handleException(excType, excValue, trace):
    notification.sender = exception_sender

def register_exception_sender(sender):
    exception_sender = sender

sys.excepthook = handleException

b.py

import a
register_exception_sender("not default")

1/0

1 个答案:

答案 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}}的全局空间中设置名称,并且更加干净和可读。