一.global
一般来说,在函数内不能修改全局变量,但如果应用global,则可以试图修改全局变量
count=10
def ad():
global count
count=20
print(count)
ad()
20
count#这里用了global在函数内部修改了count的值,所以count是20而不是10
20
二.内嵌函数
即在函数内部再定义一个函数
def fun1():
print(1)
def fun2():
print(2)
fun2()
fun1()
1
2
注意,内嵌函数只能在函数中调用,如果在函数外调用函数中的函数则会报错。
三.闭包
即函数内部的函数的变量运用了外部函数的变量
def fun1(x):
def fun2(y):
return x*y#内部函数调用了外部函数的变量
return fun2
四.lambda表达式
lambda表达式相当于匿名函数,省去了对函数的命名和定义
形式为
lambda 参数:要返回的式子
参数可以是0个,1个或者多个
i=lambda x,y:x+y
i(1,2)
3
i=lambda x:2*x
i(2)
4
五.递归
即在函数中调用函数本身的过程
(1).利用递归求斐波那契数列
def fab(n):
if n==1 or n==2:
return 1
else:
return fab(n-1) + fab(n-2)
(2).利用递归求汉诺塔
def hanoi(n,x,y,z):
if n==1:
print(x,'-->',z)
else:
hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y
print(x,'-->',z)#将最底下的盘子从x移动到z上
hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上