gpt4 book ai didi

python - 模块中所有函数的 Numpy seterr

转载 作者:行者123 更新时间:2023-11-28 18:10:49 27 4
gpt4 key购买 nike

我有一个包含带有 numpy 操作的函数的模块。我想为任何函数中发生的任何浮点错误(例如,被零除)引发异常。

这行代码会引发所有浮点错误:

np.seterr(all='raise')

我想知道如何为模块中的所有函数设置它,而不影响模块外的代码。

据我所知,在 if __name__ == '__main__': 下写下这行代码不会有帮助,因为它不会在导入模块时被调用。

有没有比在每个函数中编写 np.seterr(all='raise') 更好的方法?

最佳答案

一种可能是:

# only list functions that need to be exported
__all__ = ['main', 'foo', 'bar', 'division',]


def main():
np.seterr(all='raise')
# ....
# further function calls


if __name__ == "__main__":
main()

这是一个具体的例子:

创建一个模块,例如示例.py

import numpy as np

__all__ = ['main', 'foo', 'bar', 'division',]

def foo():
print('this is function foo')

def bar():
print('this is function bar')

def division():
print("division by zero might occur here...")

def main():
np.seterr(all='raise')
print('this is the main function')

# only executed when run from the commandline as: python sample.py
if __name__ == '__main__':
main()

然后导入这个模块,例如ipython 提示或来自其他模块:

In [1]: import sample

# only the functions included in `__all__` will be imported
In [2]: sample.__all__
Out[2]: ['main', 'foo', 'bar', 'division']

# call whichever function is needed
In [3]: sample.main()
this is the main function

关于python - 模块中所有函数的 Numpy seterr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com