def InstroStu(*args):
print("Hello everyone,allow me to introduce myself:")
print(type(args))
for params in args:
print(params)
# 调用
# 相当于把提供的实参,装入到args中
InstroStu('WangMeili',18,'Nanjing','single')
InstroStu('TOM')
Hello everyone,allow me to introduce myself::
<class 'tuple'>
WangMeili
18
Nanjing
single
Hello everyone,allow me to introduce myself::
<class 'tuple'>
TOM
•收集参数之关键字参数 ◦与收集参数不同的是,收集关键字参数改善了收集参数无名称、无对应关系的缺点。
◦收集关键字参数使用字典(dict)来保存参数
◦
#语法结构
def func_name( **kwargs):
function_body
#调用:
func_name(p1=v1,p2=v2,...)
# 关键字收集参数
# 自我介绍
def Stu(**kwargs):
print('Hello everyone,allow me to introduce myself: ')
print(type(kwargs))
# 对于字典的访问
for key,value in kwargs.items():
print(key,'--->',value)
# 调用
Stu(name='wangmeili',age=19,add='Nanjing',lover='Gavin',work='Teacher')
print('*' * 30)
Stu(name='TOM')
print('*' * 30)
Stu()
Hello everyone,allow me to introduce myself:
<class 'dict'>
name ---> wangmeili
age ---> 19
add ---> Nanjing
lover ---> Gavin
work ---> Teacher
******************************
Hello everyone,allow me to introduce myself:
<class 'dict'>
name ---> TOM
******************************
Hello everyone,allow me to introduce myself:
<class 'dict'>
•四种参数混合调用规则 ◦位置参数,默认参数,收集参数(tuple),关键字参数,收集关键字参数(dict)
◦位置参数必须放在最前面,收集关键字参数放在最后面
◦说明:默认参数、关键字参数和收集参数(tuple)的位置可以进行互换。如果收集参数在前,则其后的所有参数除了收集关键字参数外,都会变成关键字参数,若要修改参数的默认值,方法同关键字参数;如果收集参数在后,那么前面所有的参数除了位置参数外,都会变成默认参数,若要修改默认值,方法同默认参数。
◦调用规则等同于定义规则
◦
# 混合参数使用案例
# 自我介绍
def Student(name,age=20,*args,addr='No addr',hobby='None',**kwargs):
print('Hello,大家好!')
print("我叫{0},我今年{1}岁,我来自{2}".format(name,age,addr))
if hobby == 'None':
print('我目前没有啥特别的喜好')
else:
print("我的爱好是{0},有兴趣大家可以一起玩呀!".format(hobby))
print('-' * 30)
for i in args:
print(i)
print('-' * 30)
for k,v in kwargs.items():
print(k,'--->',v)
print('*' * 30)
# 调用
Student('猪上树',22,'足球','篮球',addr='江苏南京',hobby='桌球',lover='王美丽',hate='张大熊')
Student('张大熊',25,'但是我是一个环保爱好者','也是一名公益事业爱好者',addr='南邮')
Hello,大家好!
我叫猪上树,我今年22岁,我来自江苏南京
我的爱好是桌球,有兴趣大家可以一起玩呀!
------------------------------
足球
篮球
------------------------------
lover ---> 王美丽
hate ---> 张大熊
******************************
Hello,大家好!
我叫张大熊,我今年25岁,我来自南邮
我目前没有啥特别的喜好
------------------------------
但是我是一个环保爱好者
也是一名公益事业爱好者
------------------------------
******************************
# 上例函数可以改写为如下,将*args位置提前
def Student1(name,*args,age=20,addr='No addr',hobby='None',**kwargs):
print('Hello,大家好!')
print("我叫{0},我今年{1}岁,我来自{2}".format(name,age,addr))
if hobby == 'None':
print('我目前没有啥特别的喜好')
else:
print("我的爱好是{0},有兴趣大家可以一起玩呀!".format(hobby))
print('-' * 30)
for i in args:
print(i)
print('-' * 30)
for k,v in kwargs.items():
print(k,'--->',v)
print('*' * 30)