#动态参数
#*args将传入的普通参数转换为元组
def f(*args):
print(args,type(args))
li = [11,22,33,44]
f(li,55) #传入参数是列表li,则传入到函数中后转换成元组列表仍然是一个独立的元素
f(*li,55) #传入参数是*li,则传入函数中后转换成元组后就不在是一个列表,而是把li的每个元素分别传入,在转换成列表
s = 'macolee'
f(s) #参数是s,则s作为一个完整的元素存在于转换后的元组中
f(*s) #参数是*s,则转换成元组后,每个字符单独作为元素存在于元组中
#**kwargs将传入的指定参数转换成字典
def f1(**kwargs):
print(kwargs,type(kwargs))
f1(n1='maco',n2=12)
dic = {'k1':'v1','k2':'v2'}
f1(k=dic)
f1(**dic) #参数是**dic,则是将dic中的每个元素分别传入f1()函数中
#########################################
#函数传递参数过程中,传递的是值得引用还是将值复制了一份进行传递
def f(l):
l.append(111)
li = [1,2,3]
f(li)
print(li) #结果是[1, 2, 3, 111],表示传值是传递的是值的本身,函数中对值进行操作,值就会跟着改变