Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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_Code Analysis_Side Effects - Fatal编程技术网

Python-副作用/纯度分析工具?

Python-副作用/纯度分析工具?,python,code-analysis,side-effects,Python,Code Analysis,Side Effects,Python中是否有类似于Java的用于副作用/纯度分析的现有工具?我不知道有哪些工具,但这里有一些通用的方法: 将源文件分析为文本-使用正则表达式查找显示函数的内容绝对不是纯粹的-例如global关键字。出于实际目的,大多数编写得体的函数在主体中只有return语句,它们可能是纯函数。另一方面,如果函数没有return语句,那么它要么是无用的,要么是不纯的 将源文件中的函数作为代码进行分析。如果单独测试一个函数会产生一个名称错误,那么您知道它要么是不纯的(因为它无法访问更高级别的变量),要么

Python中是否有类似于Java的用于副作用/纯度分析的现有工具?

我不知道有哪些工具,但这里有一些通用的方法:

  • 将源文件分析为文本-使用正则表达式查找显示函数的内容绝对不是纯粹的-例如
    global
    关键字。出于实际目的,大多数编写得体的函数在主体中只有
    return
    语句,它们可能是纯函数。另一方面,如果函数没有
    return
    语句,那么它要么是无用的,要么是不纯的

  • 将源文件中的函数作为代码进行分析。如果单独测试一个函数会产生一个
    名称错误
    ,那么您知道它要么是不纯的(因为它无法访问更高级别的变量),要么是有错误的(在定义变量之前引用变量或类似的情况),但是正常测试应该涵盖后一种情况。如果要执行此操作,检查模块的功能可能很有用

    对于您测试的每个函数,如果它有一个相对较小的域(例如,一个输入可以是1、2、3或4),那么您可以彻底测试所有可能的输入,并通过这种方式获得特定的答案。如果它有一个有限的,或有限但较大的域(例如,所有介于0和1000之间的实数(无限但有限),或所有介于-12345和67890之间的整数),那么您可以尝试对该域中的输入选择进行采样,并使用该采样获得纯度概率。但是,这种方法可能不是很有用,因为不太可能指定函数的域,因此只有在编写函数时才能检查它,在这种情况下,您可能不需要分析它

  • 做一些聪明的事情,可能与上述技术相结合。例如,制作一个神经网络,输入是函数的文本,输出是函数的纯概率。然后,你可以在已知的纯函数或不纯函数的例子上训练网络,然后在未知纯度的函数上使用它

编辑: 在有人用新知识否决了我之后,我又回到了这个问题上!
ast
模块应该可以相对轻松地编写这样的分析工具,因为它允许您访问代码的抽象语法树。穿过这棵树应该很容易,看看是否有什么东西妨碍了纯度。这是一种比将源文件分析为文本要好得多的方法,我可能会在某个时候尝试一下。
最后,这个问题可能也是有用的,也是一个,基本上是这个问题的重复。

如果您认为工具问题不应该关闭,那么请投票重新打开。