Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 避免整个模块的函数调用-这种攻击有多严重?_Python_Python 3.x - Fatal编程技术网

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)