05,函数的参数

函数参数分类:

1、按照函数的不同阶段可分为:形参、实参

"""
形参
在函数定义阶段 括号内写的变量名 叫函数的形式参数 简称 形参
实参
在函数调用阶段 括号内传入的值 叫函数的实际参数 简称 实参
"""


另外形参、实参又可以分为:位置参数、关键字参数、默认参数、可变长参数
# 位置参数
def my_max(a,b):
    if a >= b:
        return a
    return b

res = my_max(1,10)

# a,b 为位置形参、1,10为位置实参,函数调用时有几个位置形参  就必须传几个位置实参



# 关键字参数
def register(name,age,hobby):
    print('%s|%s|%s'%(name,age,hobby))

register(name='egon',age='84',hobby='DBJ')  # 指名道姓的传
register(age='84',hobby='DBJ',name='egon')  # 指名道姓的传  无需考虑顺序问题
register('18','read',hobby='jason')  ## 位置参数必须写在关键字参数的前面!!!



#默认参数 
def register(name,age,gender='male'):
    print('%s|%s|%s' % (name, age, gender))

register('tank','96') # 没有指定就用默认的
register('gaolaoshi','18',gender='female')   # 用户指定了就用指定的




#可变长参数
def func(a,b,*xxx):
    print('a:',a)
    print('b:',b)
    print('c:',xxx)

func(1,2,3,4,5,6,7,8)
========================

a: 1
b: 2
c: (3, 4, 5, 6, 7, 8)

#*号在形参中定义 调用函数传递实参的时候*号会接收多余的位置参数  并打包成一个元祖的形式 赋值给*号后面的变量名


def func(a,b,**yyy):
    print('a:',a)
    print('b:',b)
    print('c:',yyy)

func(b=1,a=2,c=3,d=4,e=5,f=6,g=7,t=8,o=9)

# **号在函数定义阶段作为形参  函数调用阶段按照关键字的形式的多余的关键字参数**会全部接收 并且按照k:v的形式组织成字典 赋值给**后面的变量名


def func(*args,**kwargs):
    print(args)
    print(kwargs)
    print('我被执行了')

func(1,2,3,4,5,6,7,name='jason')

# 该函数无论给这个函数传递多少位置参数 和关键字参数 都能够正常执行
# 传参的时候 越短的越靠前 越长的越靠后!!!!

 





posted @ 2020-10-21 22:51  似梦千寻  阅读(189)  评论(0)    收藏  举报