面试题答案
一键面试在Python中,a, b = 1, 2
和 (a, b) = (1, 2)
在性能上几乎没有差异。
原因如下:
- 本质相同:这两种赋值方式在Python解释器底层的实现逻辑是一致的。Python在处理这两种形式的多变量解构赋值时,都会将右侧的可迭代对象(这里是元组
(1, 2)
,虽然省略了括号,但1, 2
也是一个元组)进行解包,然后按顺序将值赋给左侧的变量。 - 字节码分析:使用
dis
模块对这两种赋值方式生成的字节码进行分析,会发现它们生成的字节码指令序列几乎相同。字节码是Python解释器实际执行的指令集,相同的字节码意味着在运行时的执行步骤和开销基本一致。
所以,从性能角度考虑,开发者可以根据代码的可读性来选择使用哪种形式的多变量解构赋值。