例如,在
JavaScript中我们可以编写这样的程序:
var a = 1;
testFunction(++a, ++a, a);
function testFunction(x, y, z){
document.writeln("
x = " + x);
document.writeln("
y = " + y);
document.writeln("
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不会让我在函数参数中做任何新的赋值(例如f(x = 4,x,x)或类似的东西).