我正在阅读Python中的*args
和**kwargs
,并在REPL中进行实验:
varX, *varY = [99, 100, 101]
我原本以为varX
是[99, 100, 101]
,但事实并非如此。相反,我得到这个:
print(varX)
# 99
嗯?那么varY
是什么?
print(varY)
# [100, 101]
获取列表很有意义,但我认为它将具有三个值,而不是两个。
print(*varY)
# 100 101
至少从以前发生的所有事情来看,这对我来说是有意义的。所以我的大问题是,为什么Python(3.6)会以这种方式进行原始分配?
答案 0 :(得分:0)
使用一些示例来扩展@ user3483203试图说的内容。 您可以将元组打包并打包为单个变量,也可以将元组解压缩为几个变量。
假设您有t = (1, 2, 3, 4, 5)
,可以通过v, w, x, y, z = t
对此文件进行解包,这会将每个相关索引分配给返回变量,例如v = 1, w = 2
,依此类推。这就是所谓的“解包”。您正在将t
解包到v, w, x, y, z
中。也可以将变量打包在一起。假设您有v = 1, w = 2, x = 3, y = 4, z = 5
,则可以执行以下t = [v, w, x, y, z]
。
这只是包装和拆箱的简要说明。