书接上回:
1. 函数的创建
(1)格式:
def 函数名([形参]):
函数体
[return xxx]
例1:
def add(a, b):
c = a+b
return c
2. 函数的调用
(1)格式:
result = 函数名(实参)
例2:
def add(a, b):
c = a+b
return c
result = add(5,6)
print(result)
3. 传参的两种方式
(1)方式一:位置传参
定义时:def 函数名(形参1, 形参2):
调用时:函数名(实参1,实参2)
(2)方式二:关键字传参
定义时:def 函数名(形参1, 形参2):
调用时:函数名(形参2=实参2,形参1=实参1)
例3:
def sub(a, b):
return a/b
result = sub(b=1,a=2) #关键字传参
print(result)
def add2(a, b):
return a,b
result = add2(5, 6) #位置传参
print(result)
4. 函数的默认值参数
(1)只有和默认值参数不同时,才需要传递实参
例4:
def add3(a, b=10):
return a+b
result1 = add3(5)
result2 = add3(2, 30)
result3 = add3(2,10)
print(result1)
print(result2)
print(result3)
5. 个数可变的位置参数
(1)返回值是元组
(2)格式:*args
例5:
def func(*a):
print(a)
func(5)
func(5, 10)
func(5, 10, 15)
6. 个数可变的关键字参数
(1)返回值是字典
(2)格式:**args
例6:
def func2(**a):
print(a)
func2(a=2)
func2(a=2, b=3)
func2(a=2, b=3, c=6)
7. 个数可变参数的使用规则
(1)一个函数最多只能存在一个个数可变的位置参数
(2)一个函数最多只能存在一个个数可变的关键字参数
(3)一个函数若同时存在个数可变的位置参数和个数可变的关键字参数,那么个数可变的位置参数必须放在前面,即个数可变的关键字形参不能放在个数可变的位置形参前面
例7:
def func3(*a, *b): #----报错
pass
def func4(**a, **b):#----报错
pass
def func5(**a, *b):#----报错
pass
def func6(*a, **b):
pass
8. 其他类型转化为个数可变参数
(1)list转化为位置参数:*
(2)字典转化为关键字参数:**
例8:
def func7(a, b, c):
print(a)
print(b)
print(c)
lst = [5, 10, 34]
func7(*lst)
dict = {'a':1, 'b':2, 'c':3}
func7(**dict)
9. 函数形参中的*
(1)在形式参数列表中,*之后的形式参数只能通过关键字实参进行传递
例9:
def func8(a, *, b, c):
print(a)
print(b)
print(c)
func8(5, 6, 7)---报错
func8(5, b=6, c=7)
func8(a=5, b=6, c=7)
10. 局部变量和全局变量
(1)函数体内定义的变量就是局部变量,形参也是局部变量,要想把函数内部定义的局部变量变成全局变量,需要加关键字:global
例10:
def func9(a, b):
global c
c = a+b
return c
result = func9(5,6)
print(c)
11. 函数递归
例11:
def func10(n):
if n==1:
return 1
else:
return n*func10(n-1)
result = func10(3)
print(result)
def func11(n):
if n<=2:
return 1
else:
return func11(n-1)+func11(n-2)
result = func11(6)
print(result)