基本上,该表达式0.4 * a始终比a * 0.4. a是一个整数。我不知道为什么。
我推测这是LOAD_CONST LOAD_FAST字节码对比 更“专业”的情况LOAD_FAST LOAD_CONST,我对这个解释完全满意,除了这个怪癖似乎只适用于乘法变量类型不同的乘法。(顺便问一下,我曾经在github上找到的这个“字节码指令对流行度排名”的链接现在已经找不到了,有人有链接吗?)
无论如何,这是微观基准:
$ python3.10 -m pyperf timeit -s"a = 9" "a * 0.4"
Mean +- std dev: 34.2 ns +- 0.2 ns
Run Code Online (Sandbox Code Playgroud)
$ python3.10 -m pyperf timeit -s"a = 9" "0.4 * a"
Mean +- std dev: 30.8 ns +- 0.1 ns
Run Code Online (Sandbox Code Playgroud)
$ python3.10 -m pyperf timeit -s"a = 0.4" "a * 9"
Mean +- std dev: 30.3 ns +- 0.3 ns …Run Code Online (Sandbox Code Playgroud)