发布网友 发布时间:2022-04-23 14:46
共2个回答
热心网友 时间:2022-04-06 09:02
题主你好,
星号后跟着一个列表, 学名叫Unpacing Argument Lists, 直译过来就是解包参数列表.
先举个例子来看吧:
上面定义了一个带有三个参数a,b,c的函数example; 还有一个元素为3,6,9的列表.
此时我们要调用example这个函数,让它输出3,6,9 则我们可以有以下几种写法:
1.直接传参:
2.使用解包参数列表:
3.还是使用解包参数列表,但是以变量的形式:
上面三种写法得到的结果是一样的:
总结: *号后跟上一个列表,叫做"解包参数列表", 它主要用于函数调用, 直接看如果不好理解,则可以看展开后的形式, 即 print(*[1,2,3])这样不好理解的话, 把列表展开了, 则变成print(1,2,3)这样看就清楚多了.
另外, 还有一个双星的形式, 即**后跟变量名, 基本上也是用于函数调用时传参, 不同的是单星用于位置参数(所谓位置参数说白了就是上面example函数定义中写的a,b,c这种), 双星用于关键字参数(这里不作讨论).
网官相关说明截图:
=====
希望可以帮到题主, 欢迎追问.
热心网友 时间:2022-04-06 10:20
[1,2,3]是一个列表,里面有3个元素。
你可以理解成列表是一个.rar压缩文件,3个元素就是3个压缩进.rar文件的文件。
而*[1,2,3]就是对这个压缩文件(列表)解压缩,自然会释放出3个文件(元素)。
此外,元组、集合、字典、字符串也可以解压缩,像:
print(*(1,2,3))
print(*[1,2,3])
print(*{1,2,3})
print(*{1:"a",2:"b",3:"c"})
print(*"123")
都可以产生相同的结果。
你可以将它们理解成是不同格式(.rar、.zip、.7z等)的压缩文件,如果里面的内容是相同的,解压出来的文件自然也是相同的。
下图是一个例子: