¿Cómo probar que la evaluación de parámetros es “de izquierda a derecha” en Python?
Por ejemplo, en JavaScript podríamos escribir un programa como este:
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);
}
y obtendríamos una salida:
x = 2
y = 3
z = 3
Esto implica que los parámetros son realmente evaluados de izquierda a derecha en JavaScript. En C obtendríamos salida.
x = 3
y = 3
z = 3
Me preguntaba si podríamos hacer lo mismo en Python o es imposible, ya que es un lenguaje de referencia de paso por valor.
He hecho un programa simple pero no creo que eso pruebe nada:
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 no me deja hacer ninguna nueva asignación dentro del parámetro de función cuando lo llamo (por ejemplo,f(x=4, x, x)
o algo como esto).