相关疑难解决方法(0)

Python的函数参数和操作数的评估顺序是否具有确定性(+在哪里记录)?

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)

python operator-precedence python-2.7 python-3.x

7
推荐指数
1
解决办法
407
查看次数

为什么 sys.getsizeof 为较小的列表报告较大的值?

我不明白当两个列表都像文字一样创建时, 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)

python list sizeof

7
推荐指数
1
解决办法
312
查看次数