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

时间:2013-09-02 03:52:04

标签: python performance function interpreter python-idle

我正在考虑在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到底发生了什么?

1 个答案:

答案 0 :(得分:1)

按以下方式调用函数时:

f(20, A+10)

Python评估2020A+10到任何可行的方法。我们假设A目前为20,因此A+10适用于30。然后,名称input1input2会在20调用的环境中绑定到值30f。使用该值时,Python不需要重新评估A+10,也不会记录有关如何获取值30的任何内容。特别是,如果你打电话

f(20, A)

input2将绑定到A的当前值,但不会与A保持任何关联。在input2内重新分配f不会影响A