例如,在JavaScript中,我们可以编写如下程序:
var a = 1; testFunction(++a, ++a, a); function testFunction(x, y, z){ document.writeln("<br />x = " + x); document.writeln("<br />y = " + y); document.writeln("<br />z = " + z); }
我们将得到一个输出:
x = 2 y = 3 z = 3
这意味着在JavaScript中参数是从左到右真正评估的。在C中,我们将获得输出
x = 3 y = 3 z = 3
我想知道我们是否可以在Python中做同样的事情,还是因为它是按值传递参考语言,所以这是不可能的吗?
我编写了一个简单的程序,但我认为这不能证明任何事情:
x = 2 def f(x, y, z): print(x, y, z) f(x*2, x*2, x**2) print(x) 4 4 4 2
当我调用Python时,它不允许我在function参数内进行任何新赋值(例如f(x=4, x, x),之类的东西)。
f(x=4, x, x)
>>> def f(x, y): pass ... >>> f(print(1), print(2)) 1 2