Skip to main content
 首页 » 编程设计

python之Python 如何将表达式作为函数的参数

2025年05月04日10sxdcgaq8080

我在 IDLE GUI 中测试代码时发现了 Python 中一个令人衰弱的性能问题。

对于递归函数:

def f(input1,input2): 
    newinput1 = g(input1,input2); 
    return f(newinput1,input2) 

如果我调用函数 f(20,A+10),其中 A 是一个常量,那么每次递归调用 f() 都会得到 input2 = "A+10"作为重新解释的字符串,得到一个需要的表达式重新计算,还是得到一个数字是 A+10 的结果?

我在帮助文件中找到了这个,但需要更明确定义的内容才能理解:

“抽象往往会产生间接性并迫使解释器做更多的工作。如果间接性的层次超过了完成的有用工作量,你的程序就会变慢。你应该避免过度抽象,特别是在微小的函数或方法(通常也不利于可读性)。”

Python 到底发生了什么?

请您参考如下方法:

当你调用一个函数时:

f(20, A+10) 

Python 计算 20至 20和 A+10无论结果如何。比方说 A目前是20 , 所以 A+10计算出 30 .名字input1和 input2然后绑定(bind)到值 20和 30在调用 f 的环境中. Python 不需要重新计算 A+10当使用该值时,它不会记录任何关于值 30 的信息获得。特别是,如果你打电话

f(20, A) 

input2将绑定(bind)到 A 的当前值, 但它不会保留与 A 的任何联系.重新分配 input2里面f不会影响A .