python-基础day10
#函数的进阶 #命名空间和作用域 #内置命名空间: #python解释器一启动就可以使用的名字 #内置的名字在启动解释器的时候被加载进内存里 #全局命名空间 #在程序从上到下被执行的过程中依次加载进内存的 #放置我们设置的所有变量名和函数名 #局部命名空间 #就是函数内部定义的名字 #当调用函数的时候 才会产生这个名称的空间随着函数执行结束,这个命名空间就消失了 #在局部:可以使用全局、内置命名空间的名字 #在全局:可以使用内置命名空间中的名字,但是不能用局部中使用 #在内置:不能使用局部和全局的名字的 def max(): print('in max func') max() #作用域两种 # 全局作用域——作用在全局——内置和全局 # 局部作用域——作用在局部——函数——使用locals a=1 def func(): global a #全局申明 a+=1 func() print(a) #globals 永远打印全局的名字 #locals 根据locals所在的位置 def max(a,b): return a if a>b else b def the_max(a,b,c): x =max(a,b) return max(x,c) print(the_max(1,2,3)) #函数的嵌套定义 def outer(): def inner(): a=1 print('inner') def inner2(): nonlocal a #用于局部变量的声明 print('inner2') inner2() inner() outer() #函数名相当于函数的内存地址 可以当作变量用 def func(): print(123) def fun(f): f() fun(func) #闭包:嵌套的函数,内部函数调用外部的变量 def oh(): a=1 def oi(): print(a) return oi ch=oh() #将oi的地址给与变量ch ch() #将ch使用oi的地址形成一个函数,就相当于使用oi() #闭包:嵌套的函数,内部函数调用外部的变量 def oh(): a=1 def oi(): print(a) return oi ch=oh() #将oi的地址给与变量ch ch() #将ch使用oi的地址形成一个函数,就相当于使用oi() import urllib #模块 from urllib.request import urlopen ret =urlopen('https://www.taobao.com').read() print(ret) #闭包可以节省空间不用循环打开变量 def ger_htm(): url='https://www.taobao.com' def ger_us(): ret =urlopen(url).read() print(ret) return ger_us get_func=ger_htm() get_func()

更多精彩