作用域,高阶函数

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

原文地址:https://www.cnblogs.com/tangpg/p/7992818.html