函数
1. 函数的概念
•函数是一个对象
•函数用来保存一些可执行的代码,并且在需要时,对这些语句进行多次调用
2. 表现形式
def 函数名([形参1,形参2,形参3....]):
代码块
•注意:函数名的定义必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)
3. 函数的参数
•形参(形式参数) :即相当于在函数内部声明了变量,但是并不是赋值
•实参(实际参数):函数指定了形参,那么在调用函数时必须要传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
4.函数参数的传递方式
•定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
•位置参数:就是将对应位置的实参赋值给对应位置的形参
def fun(a, b, c=6):#指定了c默认值为6
print('a=', a)
print('b=', b)
print('c=', c)
fun(1, 2, 3)#实参传递c=3
#输出结果:
a= 1
b= 2
c= 3
•关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而使用参数名进行传递数值
def fun(a, b, c):
print('a=', a)
print('b=', b)
print('c=', c)
fun(c=8,a=7,b=6)#关键字传参,可不按形参顺序传参
•混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
def fun(a, b, c):
print('a=', a)
print('b=', b)
print('c=', c)
fun(6,7,c=8)#位置参数在前,关键字参数在后
5. 函数的不定长参数
•定义函数时,在形参前面加一个*,这个形参可获取到剩余未传递所有的实参,它会将剩余所有的实参保存到一个元组中
•带*号的形参只能有一个,可以和其他参数配合使用
•*形参只能接受位置参数,不能接受关键字参数
def fun(a, b,*c):#*c可获得未传递的所有实参
print('a=', a)
print('b=', b)
print('c=', c)
fun(6,7,8,9,10,11)#6传递给a 7传递给b 其余传递给c
#输出结果:
a= 6
b= 7
c= (8, 9, 10, 11)
•**形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
•**形参只有一个,并且必须写在所有参数的后面
def fun(a, b,**c):#**c获得剩余关键字参数
print('a=', a)
print('b=', b)
print('c=', c)
fun(6,b=7,c=8,d=9,f=10)
#输出结果:
a= 6
b= 7
c= {
'c': 8, 'd': 9, 'f': 10}
6.参数的解包
•传递实参时,也可以在序列类型的参数前添加*,这样它会自动的将序列中元素依次作为参数传递
•序列中的元素的个数必须和形参的个数一致
def fun(a, b,c):#定义函数,三个形参
print('a=', a)
print('b=', b)
print('c=', c)
t=(1,2,3)#三个元素与形参数相同
fun(*t)#对元组解包,并依次赋值给形参
#输出结果:
a= 1
b= 2
c= 3
def fun(a, b,c):
print('a=', a)
print('b=', b)
print('c=', c)
dic={
'a':1,'b':2,'c':3}
fun(**dic)#对字典进行解包,并依次赋值给形参
#输出结果:
a= 1
b= 2
c= 3