例如,我有一个这样的函数
def first(x):
return x * 2
def second(x):
return x / 2将会是
a = first(2)
b = second(a)因为创建变量a并检查类型并在使用它时通过python调用它而导致的开销比做这样的事情要贵吗?
b = second(first(2))发布于 2020-11-19 07:50:04
您可以使用dis模块检查生成的字节码。
>>> dis.dis("b=second(first(2))")
1 0 LOAD_NAME 0 (second)
2 LOAD_NAME 1 (first)
4 LOAD_CONST 0 (2)
6 CALL_FUNCTION 1
8 CALL_FUNCTION 1
10 STORE_NAME 2 (b)
12 LOAD_CONST 1 (None)
14 RETURN_VALUE
>>> dis.dis("a=first(2); b=second(a)")
1 0 LOAD_NAME 0 (first)
2 LOAD_CONST 0 (2)
4 CALL_FUNCTION 1
6 STORE_NAME 1 (a)
8 LOAD_NAME 2 (second)
10 LOAD_NAME 1 (a)
12 CALL_FUNCTION 1
14 STORE_NAME 3 (b)
16 LOAD_CONST 1 (None)
18 RETURN_VALUE第一种情况引入了两个额外的操作:a的存储和加载。
6 STORE_NAME 1 (a)
10 LOAD_NAME 1 (a)但是,在运行时没有明显的区别,并且第一种解决方案在可读性和调试方面总是更好。
https://stackoverflow.com/questions/64903104
复制相似问题