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) 我不明白当两个列表都像文字一样创建时, sizeof 的行为有何不同。我希望第二个 sizeof 的输出等于或小于第一个 sizeof 的输出,而不是更大!
>>> sys.getsizeof([0,1,2,3,4,5,6])
120
>>> sys.getsizeof([0,1,2,3,4,5])
152
Run Code Online (Sandbox Code Playgroud)