- 函数参数*arg
定义函数中,参数*arg接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组形式,如(1,2,3,4)
*args 没有key值,
例:
def fun1(*args): # 接收多个参数,无key键
print(args)
fun1(11, "abc")
运行结果:
(11, 'abc')
2.函数参数**kwarg
定义函数参数时,**arg参数接受任意多个关键字(keyword)参数,在函数中将其转化为字典 {key:value, key:value }格式, 如:{’a’:1, ’b’:2}
def fun2(parm, **kwargs): # 接收一个参数,和多个key-value参数
print(parm)
print(kwargs)
fun2(22, k1=22, k2="abc")
运行结果:
22
{'k1': 22, 'k2': 'abc'}
3.变量前缀*
一个列表、元组或字典变量前加*,会将列表拆分成一个一个的独立元素,
*号解压可迭代对象,相反zip()压缩可迭代对象
带*号变量严格称为参数,不能赋值给其他变量的,但可以作为参数传递给*arg
实例一:
def fun4(*args): # 接收多个参数,无key键
print(args)
li = [11, 22, 33, 44]
fun4(li) # 传入列表
fun4(*li) # 传入元素 传入的参数为拆分列表后的元素
运行结果:
([11, 22, 33, 44],)
(11, 22, 33, 44)
实例二:
*拆分不同类型的数据
import numpy as np
list_num = [1, 2, 3, 4, 5]
tuple_num = (1, 2, 3, 4, 5)
dict_kw = {'1': "val1", '2': 'val2', '3': 'val3'}
np_range = np.arange(1,5)
print(*list_num) # 拆分的元组
print(*tuple_num) # 拆分的元组
print(*dict_kw) # 拆分的字典
print(*np_range) # 拆分的np_range
运行结果:
1 2 3 4 5
1 2 3 4 5
1 2 3
1 2 3 4