【发布时间】:2020-10-29 13:03:18
【问题描述】:
在 Python 中使用 []、() 或什么都不打包函数调用有什么区别?
def f():
return 0, 1
a, b = f() # 1
[a, b] = f() # 2
(a, b) = f() # 3
【问题讨论】:
-
完全没有区别。如果需要更有说服力,可以使用
dis模块对包含各个版本的函数进行反汇编,观察它们的字节码是否相同。 -
唯一的区别是如果你调用 type( thing ).__name__
-
不确定是否重复,肯定相关:stackoverflow.com/questions/6967632/…
-
@reece 不过,没有什么可以打电话给
type;括号在这里纯粹是句法。[a, b] = f()不会在此处创建任何类型的列表。 -
对于这种情况,所有都是多余的。但是括号对于解包嵌套的东西很有用:
a, (b, c) = [[0, 1], [2, 3]]导致a = [0, 1]、b = 2、c = 3。