*作用于元组,目的是将元组里的内容参数一个一个传入到函数中:
my_tuple = ("wang","yuan","wai")
temp(*my_tuple)
#---等同于---#
temp("wangyuan","yuan","wai")
更一般的,我们遇到的是这种情况:要执行的参数除了以*开头的元组数据,还有普通的单个参数。
def print_str(first, *second):
print(first)
print(second)
这里第二个带星号的参数*second可以没有任何输入,也可以有多个输入,比如:
print_str("hello","美女","小猫","青蛙")
hello是第一个参数first,而后面的那些都会被转为一个元组数据当作第二个参数*second。输出结果如下:
输出结果
不直接传入具体参数,而是传入一个元组变量,使用*解包:
numbers_strings = ("1","2")
def print_str(first, second):
print(first)
print(second)
if __name__ == "__main__":
print_str(*numbers_strings)
输出结果:
1
2
numbers_strings是个元组变量,需要在前面加一个星号*来解包,把它展开成一个一个的值,才符合上面提到的正确输入格式。也就是说,print_str(*numbers_strings) 等同于 print_str("1","2","3","4","5")
如图