一、函数的列表传参
列表举例 [“a”,”b”,”c”]
其实在使用列表传参的时候比较简单,只需要将实际的列表作为参数传入到调用的函数中的时候,在列表变量前加上一个星号*即可把某个列表拆分成多个参数传入到自定义函数中。如果调用的时候不加*那么多把列表看成一个整体传入。
举例:
list2=["a","b","c"]
def P2(*s1):
for v in s1:
print("<"+str(v)+">")
pass
P2(*list2)
列表拆解传参的注意事项
注意:如果在自定义函数的时候,定义的参数前没有加*,那么我们在调用这个函数的时候,也不能在列表参数值前加*。其实在这里,我们如果想要将列表拆解成多个参数进行传入的时候,我们必须就是要定义一个可变参数,而定义可变参数的时候,我们必须要加上一个*
本质:列表拆解传入的时候 ,自定义函数的参数个数必须要支持实际拆解传参调用函数。
二、函数的字典传参
类似于列表拆解传参,只不过在传入的参数前面加上两个*,也即使说使用双星号**
举例:
dic1={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}
def D1(**d):
print(d)
D1(**dic1)
注意:在定义函数的时候使用**进行定义的话,我们必须在调用的时候也要对传入的字典加上**
同样类似于列表的去星号方式
在定义字典作为参数的时候,如果定义的参数没有**,那么在调用这个函数的时候,也不要加上**,否则直接报错。
三、知识总结:
函数的序列传参
1.列表的拆解传参,可以使用*,也可以省略,具体要看传入的参数的数量作为本质条件。
2.掌握字典的拆解传参,使用**,具体使用方法类似于列表
本节源代码
#对比可变参数与列表传参的区别
#可变参数的情况
# def P(*s1):
# for v in s1:
# print("<"+str(v)+">")
# pass
# list1=["a","b","c"]
# P(list1,"123","ggg")
#拆解列表传参的情况
# list2=["a","b","c"]
# def P2(*s1):
# for v in s1:
# print("<"+str(v)+">")
# pass
# P2(*list2)
# #定义的时候不加星号的情况
# list3=["a","b","c"]
# def P3(s1):
# for v in s1:
# print("【"+str(v)+"】")
# P3(list3)
#定义参数数量和列表中的值的数量相同的情况
# list4=["a","b","c"]
# def P4(s1,s2,s3):
# print("#"+s1+"#")
# print("#" + s2 + "#")
# print("#" + s3 + "#")
# P4(*list4)
#自定义字典的传入输出
# dic1={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}
# def D1(**d):
# for s1 in d.items():
# print(s1[0]+"="+s1[1])
# D1(**dic1)
dic2={"name":"老刘","work":"程序员","微信公众号":"编程创造城市"}
def D2(d):
for s1 in d.items():
print(s1[0]+"="+s1[1])
D2(dic2)
执行效果(注释的代码将没有显示效果):
name=老刘
work=程序员
微信公众号=编程创造城市