global 全局作用域:
- 函数内部不能直接修改外部变量
a = 110 #全局作用域
def f1(): #函数内部不能直接修改外部变量
global a #应该声明全局变量
print(a)
a = a+1 #修改 了全局变量 a=110。(得小心使用)
return a+1
nonlocal 局部作用域:
a=110 # 全局作用域 global
def f6():
a = 10 # 闭包函数外的函数中 enclosing
def ff6():
## global a # a=110
nonlocal a # a=10
a += 1 # 局部作用域 local
print(a)
return a+1
return ff6()
高阶函数:
- 能接收函数作为变量,或者返回值是函数(递归函数)
求10的阶乘:递归------------> 返回函数本身
def jiecheng(a):
if a==1:
return 1
else:
return jiecheng(a-1)*a
>>> jiecheng(4)
24
>>> jiecheng(10)
3628800