函数的定义
函数是组织好的,可重复使用的,用来实现独立功能的代码段。
函数可以提高程序代码的重用率。
函数的格式
1)函数名必须遵循标识符规则,数字,字母,下划线,并且不能以数字开头,不能使用关键字。
2)函数先定义后调用。
3)函数不调用是不执行的。
4)函数可以调用多次。
定义带有参数的函数
1)调用的时候,这个函数定义时有几个参数,就需要传递几个参数,参数值和参数名称是按函数声明中定义的顺序匹配起来的。
2)定义时小括号中的参数,用来接收参数用的,称为“形参”
调用时小括号中的参数,用来传递参数用的,称为“实参”。
函数的参数
- 位置参数:(必须一一对应,是有顺序的)在我们传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式。
def sum(a,b,c):
d=a+b+c
print(d)
a=3
b=4
sum(a,b,7)
sum(3,4,7)
2.关键字参数(对应实参,实参写名字)我们在传参的时候,以形参等于实参的形式忽略定义的顺序进行传参的传参方式。
def dengji(name,age):
print("我叫",name)
print("年龄",age)
( dengji("张三",30)
dengji(40,"刘德华"))
def hs(a,b,c):
print(a,b,c)
hs(2,3,c=8)
hs(3,4,a=2)
dengji(age=20,name="张惠妹")
3.默认参数(对应形参,形参写名字)是在我们定义参数时候,我们给形参一个默认值,在我们调用函数的时候,如果不给有默认值的形参传递,会自动采用默认值。当某个值变化小的时候,我们就可以使用默认参数。
def dengji(name,age,sex='男'):
print(name,age,sex)
dengji('张三',19)
print('李四',20,'男')
print('王五',21,'女')
def xiaozhu(a,b=3):
print(a,b)
4.可变参数:能处理比当初声明时更多的参数,会将传入的参数变成元组(*args)或者字典(**kwargs)。
1)元组参数 *args(*通过给形参前面添加使参数变成一个元组,所有传递的参数变成元组的元素。注意:args参数名称可以任意命名,但是一般叫他args)
def kb(*a):
print(a,type(a))
for x in a:
print(x)
(kb(1)
kb(1,2,3,4))
kb()
*具有打散序列的功能
def kb2(*a):
print(a,type(a))
x=(1,2,3)
kb2(x)
kb2(*x)
a=[1,2,3]
print(*a)
b=(1,2,3)
print(*b)
c,*d=a
print(c,d)
2)字典参数(通过给形参前面添加**使参数变成一个字典,所有传递的参数变成字典的键值对,这里传参要求键等于值的形式。*kwargs结果类型是字典,传递值是以key=value方式传入)
def kb(**kwargs):
print(kwargs,type(kwargs))
kb(name="张三",age=18)
kb(name="张三",age=18,sex='男')
kb()
**具有打散字典的功能
def kb(name,age):
print(name,age)
a={'name':'张三','age':18}
kb(**a)
**kwargs必须放在*args后面,否则会报错
def kb(*a,**b):
print(a,b)
a={'name':'张三',"age":18}
kb(1,2,3,**a)
函数返回值return
所谓‘’返回值‘’,就是程序中函数完成一件事后,最后给调用者的结果,调用者根据需求利用返回值做不同的操作。return可以返回多个值。
注意:1.如果函数不写返回值,默认返回none。return关键字有两个作用:一个作用是返回内容,另一个是结束此方法。(return后面的代码不会执行,因此一般不建议在return后面写代码)
def hs(a,b):
c=a+b
d=a-b
e=a*b
return c,d,e
x=hs(5,6)
print(x)
递归三件
递归前进,递归后退,递归边界。当递归边界成立的时候,递归后退,不成立的时候递归前进