1.位置参数
定义:在我们在传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式。
实参和形参必须一一对应
2.关键字参数
定义:我们在传参的时候,以形参等于实参的形式忽略形参定义的顺序进行传参的传参方式
关键字只能是形参中声明过的才可以使用
3.位置参数与关键字参数混用
位置参数在前,关键字参数在后
4.默认参数
定义:
在我们定义参数时候,我们给形参一个默认值,在我们调用函数的时候,如果不给有默认值的形参传参,会自动采用默认值。
当某个值变化小的时候,我们就可以使用默认参数。
默认参数一定要写到形参后
def mrcs(name,age,gender='男'):
print('姓名:{},年龄:{},性别:{}'.format(name,age,gender))
mrcs('爱自由',18)
mrcs('mmmmm',20,gender='女')
5.可变参数
如果函数中的参数比较多,定义起来麻烦,调用起来也麻烦, 这时可以使用可变参数,能处理比当初声明更多的变量,会将传入的参数变成一个元组。
''' 格式: *变量名'''
(1)传递多个位置参数 ,将多个位置参数组织成一个元组 ,变量名一般为args
def kbc(*args):
print(args)
print(args[0],args[1])
kbc(1,'z','a')
打散(拆包)功能
lst=[1,'z','a']
def kbc(*args):
print(args)
print(args[0], args[1])
kbc(*lst)
(2)传递多个关键字参数 ,将多个关键字参数组织成一个字典,变量名一般为kwargs
def kbc2(**kwargs):
print(kwargs)
print(kwargs['name'],kwargs['age'],kwargs['sex'])
kbc2(name='csx',age=18,sex='男')
打散(拆包)功能
def kbc2(**kwargs):
print(kwargs)
print(kwargs['name'],kwargs['age'],kwargs['sex'])
dic={'name':'csx','age':18,'sex':'男'}
kbc2(**dic)
(3)打散功能
tup=(1,2,3)
print(tup)
print(*tup)
lst=['a','z','y']
print(lst)
print(*lst)
s='happy 2019'
print(s)
print(*s)
#将元组中的1,2,3分别给a,b,c参数赋值
tup=(1,2,3)
def func(a,b,c):
print(a,b,c)
func(*tup)#通过打散功能传递位置参数
6.参数顺序
位置参数、关键字参数、默认参数、可变参数(*args,**kwargs)
创建函数声明时的顺序:
位置参数、*args、默认参数、**kwargs
(1)正确的做法
def sx(a,*args,b=10,**kwargs):
print(a)
print(args)
print(b)
print(kwargs)
sx('zs','ww',1,name=1,age=2)
(2)错误的做法
7.函数嵌套及调用
函数内部嵌套函数
def func3():
print('fun3....')
def func4():
print('func4....')
func4()
func3()
在函数内部调用其他函数
def fun1():
print('fun1...')
def fun2():
fun1()
print('fun2...')
fun2()