函数的作用域是就近原则,从里往外找,如果自己函数里有,就拿过来如果自己的函数里面没有的话,就去它父级函数里面找,父亲用不了儿子的,儿子可以用父亲的函数只有被调用才会执行# 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,sysdef 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,@timerdef run2(name): print(name) time.sleep(0.5)run2(‘niuhanyang‘) #上面这个函数其实就是返回了一个函数名而已#1、调用timer函数的时候,要传入一个方法名,# timer函数在函数内部定义了一个函数叫做deco#又在函数deco内部调用了timer里面传入的方法#run保存的是deco,deco是一个函数,调用run就是调用deco
时间: 2024-09-28 17:18:02