Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7_Function_Abstract Syntax Tree - Fatal编程技术网

Python:如何在不执行代码的情况下验证函数调用

Python:如何在不执行代码的情况下验证函数调用,python,python-2.7,function,abstract-syntax-tree,Python,Python 2.7,Function,Abstract Syntax Tree,我想验证python函数调用是否在不执行它们的情况下有效 假设我有以下代码: 定义函数(a,b): 印刷品(a、b) cond=真 如果条件: func(1,2) 其他: func(1) 如果cond=True,那么一切都会正常运行,但是如果cond=False,那么它将失败并抛出以下错误: TypeError: func() takes exactly 2 arguments (1 given) 我需要知道是否所有的函数调用都有效,而不必调用任何函数。这样的错误可以事先使用检查 安装myp

我想验证python函数调用是否在不执行它们的情况下有效

假设我有以下代码:

定义函数(a,b): 印刷品(a、b) cond=真 如果条件: func(1,2) 其他: func(1) 如果
cond=True
,那么一切都会正常运行,但是如果
cond=False
,那么它将失败并抛出以下错误:

TypeError: func() takes exactly 2 arguments (1 given)

我需要知道是否所有的函数调用都有效,而不必调用任何函数。

这样的错误可以事先使用检查

  • 安装mypy
    python3-m pip安装-U mypy
  • 用于检查Python3代码运行
    mypy code.py
    ,以及Python2代码运行
    mypy--py2 code.py
  • 它将抛出以下错误:

  • 你能运行单元测试吗?一个合适的静态分析器会发现这种问题。如果正确编写测试所有条件的代码,单元测试将捕捉到这一点。为什么您需要在运行时弄清楚这一点,如果发现问题,您会怎么做?Python的方法往往是“请求原谅比请求许可更好”——只要打电话,如果不起作用,我们会处理它。然而,如果它真的是上面的代码,那么它只是代码中的一个结构错误。您需要提供更多的(“真实的”)代码,以便我们对如何处理这种情况给出正确的答案。我不想在运行时运行假设的检查器,而只是在运行前检查运行时是否有任何东西可能失败。总之,我找到了一个使用mypy(Python的静态类型检查器)的解决方案
    code.py:9: error: Too few arguments for "func"
    Found 1 error in 1 file (checked 1 source file)