淘宝返利助手,金昌汽车站,2011英语四级作文
目录
函数的内部函数,对外部作用域,而非全局作用域的引用。
可以打破层级关系,把局部变量拿到全局使用,并且可以把外部的变量x封装到f2中,然后下车直接调用f2就行了。
x = 10 def f1(x): # f1()== f2 # x = 2 def f2(): print(x) return f2 # 把f2函数当做一个返回值返回给f1. f2 =f1(1) # f1()就相当于把f2的值拿到,然后在赋值给一个变量名为f2。 f2() 1
全局中相同名字的变量不会影响局部的变量。
def f1(x): print(x) f1(1) 1
def f1(x): def f2(): print(x) return f2 f = f1(2) f() 2
返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹一层作用域,这使得,该函数无论在何处调用,都优先使用自己外层包裹的作用域。
应用领域:延迟计算、爬虫领域。
import requests def outter(url): #outter() == spider ;spider() == response == requests.get(url) def spider(): # spider() == response response = requests.get(url) print(response.status_code) return response return spider baidu = outter('https://www.baidu.com') # baidu == spider baidu() 200
是为被装饰器对象添加额外功能。装饰器本质上也是一个函数,只不过这个函数具有装饰的功能。
当我们想新增功能,但又不想修改原方法的使用方法,这个时候就可以使用装饰器。
装饰器的实现必须遵循两大原则:
import time def time_sleep(): time.sleep(1) print('from time_sleep') def deco(func): # deco()== wrapper ; func == time_sleep def wrapper(): start = time.time() res = func() end = time.time() print(end - start) return res return wrapper time_sleep = deco(time_sleep) #func == time_sleep ,括号里的time_sleep才是调用上面函数time_sleep,而前面的time_sleep只是我们自定义的一个接收变量值的变量名。 time_sleep() # time_sleep() == wrapper() from time_sleep 1.000948429107666
import time def time_sleep(): time.sleep(1) return 'longzeluola' def deco(func): def wrapper(*args,**kwargs): start = time.time() res = func(*args,**kwargs) end = time.time() print(end - start) return res return wrapper ##wrapper() == res == func() time_sleep = deco(time_sleep) #wrapper res = time_sleep() # wrapper() print(res) 1.0001847743988037 longzeluola
import time def time_sleep(x): #给定义了一个形参 time.sleep(x) return 'longzeluola' def deco(func): def wrapper(*args,**kwargs): start = time.time() res = func(*args,**kwargs) end = time.time() print(end - start) return res return wrapper ##wrapper() == res == func() time_sleep = deco(time_sleep) #wrapper res = time_sleep(3) # wrapper() print(res) 3.00034236907959 longzeluola
def deco(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res return wrapper
import time @deco # @deco == time_sleep == deco(time_sleep) def time_sleep(x): time.sleep(x) return 'longzeluola' time_sleep(5) 5.000701427459717
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论