有些人很疑惑为什么在Python3里有的变量前面有个*号呢?如下图!
Python不可以会无缘无故的出现这种写法,必然有他的用处!
原因分析
元组变量前加 * 视为对元组解包。解包后的子内容会依次赋值给对应位置的其他变量
一个元组解包最经典的用法就是python里的两变量值互换但不借用第三中间变量:、
a, b = b, a
当然这里没有 * ,此外还注意到元素数量较少不会引起歧义时,元组两侧的括号可以省略
回到题图命令里
product(A, B)
相当于返回一个A,B列表中元素依次互相配对的生成器。假设里面有 5 个元组,那么在用 * 解包后就会返回 5 个元素(都是元组)。而print命令恰好是一个可以接受无限多参数的函数(作用就是把这些参数内的内容打印出来),于是你就会看到 5 个元组依次出现在屏幕上了。
扩展一下,如其他答主所说,* 也可以用来解包参数以传递