小编典典

如何证明Python中参数评估是“从左到右”的?

python

例如,在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),之类的东西)。


阅读 144

收藏
2021-01-16

共1个答案

小编典典

>>> def f(x, y): pass
...
>>> f(print(1), print(2))
1
2
2021-01-16