形参:形式上的参数 ,声明函数时 括号里的参数叫做形参
实参:实际上的参数 ,调用函数时 括号里的参数叫做实参
def funName(arg):#形参
print('接收到的参数:',arg)
funName(666) #实参
带有默认值的参数:
如果形参有默认值,调用时可以不需要传参,系统会直接使用参数的默认值。
调用时给有默认值的参数传参,实参会覆盖形参的默认值。本质上就是变量的重新赋值。
#定义带有默认值参数的函数
def funName(arg = 'jack'):
print('参数值:',arg)
funName() #调用方式一
funName('mark') #调用方式二 调用时传的参数会覆盖默认值
使用关键字参数:
在调用函数时 在实参前面指定形参的做法 这样可以防止传参混乱
#定义带有默认值参数的函数
def funName(name = 'jack',age = 18,sex = 'man'):
print('name:',name)
print('age:',age)
print('sex:',sex)
funName(8,'二狗','Superman') #参数较多时赋值顺序颠倒,将会影响程序执行结果
funName(age = 8,name = '二狗',sex = 'Superman') #关键字参数赋值完美解决上面的问题
好玩的来了 python中形参可以使得参数的参数的传递不受数量的限制
收集参数:
1.非关键字收集参数 :形参接收到的实参会组成元组
def function_mode(a,b,*arg,k=9):
print(a,b,type(a),type(b))
print('==========')
print(arg,type(arg))
print('================')
print(k,type(k))
function_mode(1,2,3,4,5)
运行结果:
1 2 <class 'int'> <class 'int'>
==========
(3, 4, 5) <class 'tuple'>
================
9 <class 'int'>
2.关键字收集参数 : 形参接收到的实参组成字典 传入实参时 用关键字传参表示键值对
def function_mode(**args):
print(args,type(args))
function_mode(a=1,b=2,c=3)
运行结果:
{'a': 1, 'b': 2, 'c': 3} <class 'dict'>
注意:
多种参数混合使用的时候 关键字收集参数必须在最后
关键字收集参数必须用关键字传入参数