标签:close python3 嵌套 使用外部 request isp 全局 bsp 函数
#函数嵌套的定义
#内部函数可以使用外部函数的变量
global 方法可以在局部变量中声明一个全局变量,影响的是全局变量,对局部变量无效
eg
a = 1 def outer(): a = 1 def inner(): b = 2 print(a) print(‘inner‘) def inner2(): global a #声明了一个全局变量 a += 1 print(‘inner2‘) inner2() inner() print(‘**a**‘,a) outer() print(‘全局a:‘,a)
Python3中新加入的一个方法nonlocal方法,对全局无效,对局部也只是对最近的一层有影响:
nonlocal 声明了一个上层局部变量,只能找离它最近的一个局部变量(inner或outer中去找),如果该变量不存在则报错
声明了nonlocal的内部函数的变量修改会影响到离当前函数最近一层的局部变量
eg
a = 1 def outer(): a = 1 def inner(): b = 2 print(a) print(‘inner‘) def inner2(): nonlocal a #声明了一个局部变量 a += 1 print(‘inner2‘) print(‘##a##‘,a) inner2() inner() print(‘**a**‘,a) outer() print(‘全局a:‘,a)
函数名的本质
1、函数名可以被赋值
def func() print(‘abc‘) func2 = func func2()
2、函数名可以作为容器类型的元素
def func() print(‘abc‘) func2 = func l = [func,func2] for i in l: i()
3、函数名可以作为函数的参数
def func() print(‘abc‘) def fun(f) f() fun(func)
4、函数名可以作为函数的返回值
def func() print(‘abc‘) def fun(f) f() return f qqxing = fun(func) qqxing()
闭包:嵌套函数,内部函数调用外部函数的变量
def outer(): a = 1 def inner(): print(a) return inner #函数名以返回值的形式被函数返回 print(inner.__closure__) #查看一个函数inner是不是一个闭包 inn = outer() inn() #闭包的作用:可以在函数外面调用里面的子函数
闭包的应用:每次调用内部函数的时候不用重复的生成外部的局部变量
from urllib.request import urlopen def get_url(): url = ‘http://www.xiaohuar.com/2014.html‘ def get(): ret = urlopen(url).read() print(ret) return get get_func = get_url() get_func() get_func()
标签:close python3 嵌套 使用外部 request isp 全局 bsp 函数
原文地址:https://www.cnblogs.com/hubangsheng/p/9636239.html