Jas*_*n S 7 python operator-precedence python-2.7 python-3.x
C不保证任何评估顺序所以如下语句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'))
Run Code Online (Sandbox Code Playgroud)
打印
f1
hey
ho
hahaha
tweedledee
tweedledum
f2
Run Code Online (Sandbox Code Playgroud)
wim*_*wim 12
是的,保证从左到右的评估顺序,但作业除外.这里记录了(py2,py3):
Python从左到右评估表达式.请注意,在评估分配时,右侧在左侧之前进行评估.
在以下行中,表达式将按其后缀的算术顺序进行计算:
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
Run Code Online (Sandbox Code Playgroud)
如果语言没有对此做出选择,对一个参数的评估可能会改变另一个参数并导致未指定的行为,因此Python的所有实现都必须遵循此规范.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |