首页 > 代码库 > python笔记20-装饰器、作用域
python笔记20-装饰器、作用域
函数的作用域
是就近原则,从里往外找,如果自己函数里有,就拿过来
如果自己的函数里面没有的话,就去它父级函数里面找,父亲用不了儿子的,儿子可以用父亲的
函数只有被调用才会执行
# name = ‘python‘
# def warpper():#1
# name=‘吴冰‘
# def deco():#2
# name =‘陈冬瓜‘
# def hhh():#3
# name = ‘张莹‘
# print(‘xxx%s‘%name)
# print(‘我在里面%s‘%name)
# hhh()
# deco()
# print(‘外面的name是%s‘%name)
# warpper()
装饰器
#1、函数里面也可以嵌套的定义一个函数
#2、高阶函数
#装饰器说白了就是函数嵌套+高阶函数
#装饰器的作用就是在不改变原有函数的调用方式,入参的情况下,给函数添加新功能
#偷偷摸摸的给函数加上新功能,但是不改变原来的函数
#常用模块
#什么是模块,模块其实就是一个python文件
import time,os,sys
def timer(func):
def deco(*args,**kwargs):
#*args,**kwargs用来接收传入函数的参数
start_time = time.time()
res = func(*args,**kwargs)#获取返回值
end_time = time.time()
print(‘runtime‘,end_time-start_time)
return res
return deco
@timer #run = timer(run)
def run():
# start_time = time.time()
print(‘run..‘)
time.sleep(2)
# end_time = time.time()
# print(‘runtime‘, end_time - start_time)
#run == deco,
@timer
def run2(name):
print(name)
time.sleep(0.5)
run2(‘niuhanyang‘)
#上面这个函数其实就是返回了一个函数名而已
#1、调用timer函数的时候,要传入一个方法名,
# timer函数在函数内部定义了一个函数叫做deco
#又在函数deco内部调用了timer里面传入的方法
#run保存的是deco,deco是一个函数,调用run就是调用deco
python笔记20-装饰器、作用域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。