Python函数中参数类型(2)

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)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/709b3d11389848ad9aab8e6835d33ada.html