试图用Python的* args包住我的头

时间:2018-08-02 13:42:57

标签: python python-3.x args

我正在阅读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)会以这种方式进行原始分配?

1 个答案:

答案 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]

这只是包装和拆箱的简要说明。