gpt4 book ai didi

python - Python 对函数参数和操作数的求值顺序是否确定(+ 它记录在何处)?

转载 作者:太空狗 更新时间:2023-10-29 21:21:45 34 4
gpt4 key购买 nike

C 没有 guarantee any evaluation order所以像 f(g1()+g2(), g3(), g4()) 这样的语句可能会执行 g1(), g2()g3()g4() 任意顺序(尽管 f() 将在所有这些之后执行)

Python 呢?我对 Python 2.7 的实验表明它似乎是从左到右的评估顺序,但我想知道是否指定了这种情况。

测试程序:

def somefunc(prolog, epilog):
print prolog
def f(a, b, *args):
print epilog
return f

def f(text):
print text
return 1

somefunc('f1','f2')(f('hey'),f('ho'),f('hahaha'),f('tweedledee')+f('tweedledum'))

打印

f1
hey
ho
hahaha
tweedledee
tweedledum
f2

最佳答案

是的,从左到右的评估顺序是有保证的,作业除外。这记录在这里( py2py3 ):

Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side.

In the following lines, expressions will be evaluated in the arithmetic order of their suffixes:

expr1, expr2, expr3, expr4
(expr1, expr2, expr3, expr4)
{expr1: expr2, expr3: expr4}
expr1 + expr2 * (expr3 - expr4)
expr1(expr2, expr3, *expr4, **expr5)
expr3, expr4 = expr1, expr2

如果语言没有对此做出选择,一个参数的评估可能会改变另一个参数并导致未指定的行为,因此 Python 的所有实现都必须遵循此规范。

关于python - Python 对函数参数和操作数的求值顺序是否确定(+ 它记录在何处)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46288616/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com