Python 中的集合没有确定的顺序。 那么为什么可以在 Python 中对集合进行元组解包呢?
为了演示该问题,请在 CPython 3.10.12 中执行以下操作:
a, b = {"foo", "bar"} # sets `a = "bar"`, `b = "foo"`
a, b = {"foo", "baz"} # sets `a = "foo"`, `b = "baz"`
我认识到字面上的答案是Python元组解包适用于任何可迭代对象。 例如,您可以执行以下操作:
def f():
yield 1
yield 2
a, b = f()
但是为什么元组解包没有使用检查来检查解包的内容是否具有确定性顺序?
收益率和回报之间存在差异。一旦计算/获取了值,yield 关键字就会从函数中生成一个值。即使在yield之后,函数执行也不会停止,它会异步继续。如果您想打开退回的物品的包装,请执行以下操作:
def f():
return 1, 2
a, b = f() # sets a=1 and b=2