首页 > 解决方案 > 检查两个函数是否相同

问题描述

我有以下问题。

我的程序将大量使用插件,这些插件将执行计算要求高的任务。但是在程序的不同运行中,所需的操作(由插件执行)可能是相同的。为了加快速度(除其他原因外),我想检测用户是否为程序提供了相同的插件。在我的情况下,插件只是一个可调用的。

问题是 - 我怎样才能检测到它?

当然,代码等价对于这种检查是绝对必要的,正如 (*) 中所指出的那样。但显然,这还不够(**)。

因为我将通过参数名称传递参数(即通过 dict 解包),所以肯定需要检查相同的参数在函数中扮演相同的角色。

同样,某些事情显然必须被禁止。例如,从文件中加载一些数据并从中生成输出(然后任何有意义的检查都是不可撤销的)。

理想情况下,我想实现在函数式语言中运行良好的类似机制,即函数的输出完全由其参数的值决定。然后,如果函数接收到相同的参数集,它的输出就可以被加载(不过在程序的一次运行中)。这种机制依赖于这些函数是无状态的这一事实。

为了更清楚地说明我的问题 - 我需要设置什么样的限制(不一定是可检查的 - 它们只能记录在案),以便我能够检查其中两个是否相同?(例如,仅使用局部变量,不使用闭包等)此外,这些限制在实践中的样子。

我的问题来自这样一个事实,即我对函数在 Python 中的表示方式知之甚少,所以如果有人知道关于这个问题的全面文本或视频,它也会有所帮助。

谢谢你。

(*)检查两个 Python 函数是否相等

(**) https://gist.github.com/sharth/7536465

标签: python

解决方案


推荐阅读