global、nonlocal

高阶函数

  • 内置函数

    • globals()全局的,返回的是字典:字典里面的键值:全局作用域所有的内容
    • locals()局部的,返回的是字典:字典里面的键值:局部作用域所有的内容

***global

  • 在局部作用域声明一个全局变量
count=20
def xiaoxiannv():
    global count
    count+=1
xiaoxiannv()
print(count)

nonlocal

  • 不能操作全局变量
  • 只能在局部作用域内:内层函数对外层函数的局部变量进行修改
age=12
def xiaoxiannv():
    age = 20
    def wangmingming():
        nonlocal age
        age+=1
    wangmingming()
    print(age)
xiaoxiannv()

函数名的应用

  1. 函数名指向的是函数的内存地址。函数名+()就可以指向函数
  2. 函数名就是变量
def func1():
    print('func1')

s=func1
d=s
q=d
q()

3.函数名可以作为容器类数据类型的元素

def func1():
    print('func1')

def func2():
    print('func2')

def func3():
    print('func3')

li=[func1,func2,func3]
for i in li:
    i()
得:
func1
func2
func3

4.函数名可以作为函数的参数

def a():
    print('hello')

def b(n):
     a()     
q=b(a)

得:
hello

5.函数名可以作为函数的返回值

def a():
    print('hello')

def b(n):
     return n         #return将n返回给函数的调用者q
q=b(a)
q()      #函数把n(函数的内存地址)返回给q后,q+()执行函数

得:hello
上一篇:python函数装饰器


下一篇:python网络爬虫(第六章:协程的实现方法)