首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -副作用/纯度分析工具?

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

Stack Overflow用户
提问于 2013-12-30 13:15:43
回答 1查看 347关注 0票数 7

在Python中是否存在类似于http://jppa.sourceforge.net的现有的副作用/纯度分析工具?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-30 15:00:32

我不知道有什么存在,但以下是一些常见的制作方法:

  • 将源文件分析为文本--使用正则表达式查找显示函数的内容肯定不是纯的,例如global关键字。出于实际目的,在正文中只有一个return语句的最体面的编写函数很可能是纯的。另一方面,如果一个函数没有return语句,那么它要么是无用的,要么是不纯的。
  • 将源文件中的函数作为代码进行分析。如果孤立地测试一个函数会产生一个NameError,那么您知道它要么是不纯的(因为它在更高的级别上没有访问变量的权限),要么是在它中有一个错误(在定义变量之前引用一个变量或者其他类似的变量),但是后一种情况应该由正常的测试来处理。如果您想这样做,检查模块的函数等距函数可能很有用。 对于您测试的每个函数,如果它有一个相对较小的域(例如,一个输入可以是1、2、3或4),那么您可以对所有可能的输入进行详尽的测试,并以这种方式得到一定的答案。如果它有一个有限的、有限的但大的区域(例如所有0到1000之间的实数(无限但有限),或者-12345到67890之间的所有整数),那么您可以尝试对该域中的输入进行抽样,并使用它获得纯度的概率。但是,这种方法可能不是很有用,因为不太可能指定函数的域,因此您可能只能在编写函数时检查它,在这种情况下,您可能不需要分析它。
  • 做一些聪明的事情,可能结合上面的技巧。例如,建立一个神经网络,输入作为函数的文本,输出作为纯的可能性。然后,你可以用你所知道的纯粹或不纯的函数来训练网络,然后将它用于未知纯度的函数。

编辑:我回到这个问题后,有人以新的知识被否决了!ast模块应该使编写您自己的分析工具相对容易,因为它允许您访问代码的抽象语法树。穿过这棵树,看看是否有什么能阻止纯洁的东西,这应该是相当容易的。这是一种比将源文件作为文本分析更好的方法,我可能会在某个时候尝试一下。最后,问题也可能是有用的,也可能是问题,它基本上是这个问题的重复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20840337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档