Python 避免整个模块的函数调用-这种攻击有多严重?
我有一个生成图像的模块。有时我想跳过它,所以我设计了以下技巧:Python 避免整个模块的函数调用-这种攻击有多严重?,python,python-3.x,Python,Python 3.x,我有一个生成图像的模块。有时我想跳过它,所以我设计了以下技巧: import visualization def main(skip_figs: ("Skip making figures", 'flag', 's')): if skip_figs: def fake(*args, **kwargs): pass for k, v in vis.__dict__.items(): if callable
import visualization
def main(skip_figs: ("Skip making figures", 'flag', 's')):
if skip_figs:
def fake(*args, **kwargs):
pass
for k, v in vis.__dict__.items():
if callable(v):
vis.__dict__[k] = fake
## This line would be "skipped"
visualization.plot_something(x, y)
if __name__ == '__main__':
try:
import plac; plac.call(main)
except:
import pdb, sys, traceback
_, _, tb = sys.exc_info()
traceback.print_exc()
pdb.post_mortem(tb)
这是个坏主意吗?它似乎起作用了。有没有更像蟒蛇的方法?当然,我可以为
visualizations
中的每个函数调用编写if else
子句,但我很懒。您可以将可视化
改为unittest.mock.mock
实例:
from unittest.mock import Mock
import visualization
...
if skip_figs:
visualization = Mock()
visualization.plot_something(x, y)