python-函数&高阶函数&嵌套函数&装饰器

学习随笔:

简单介绍:

函数:函数即变量
高阶函数:1.把一个函数名当做一个实参传给一个参数
2.返回值中包含函数名
嵌套函数:函数内部再次定义函数
装饰器:装饰器就是函数,是为了给其他函数添加功能
原则上不能改变被装饰函数的源代码,不能修改装是函数的调用方式

高价函数+嵌套函数=装饰器

代码如下:
1.函数
1 #函数
2 def foo(name):#定义一个函数
3     print('is this foo name:',name)
4 foo('FOO')   #函数foo的调用
5 foo2=foo  #函数即变量,将foo作为实参传给foo2
6 foo2('FOO2') #foo2的调用,即foo的调

2.高阶函数

 1 #高阶函数
 2 
 3 def test(func):
 4     start_time=time.time()
 5     func()
 6     end_time=time.time()
 7     print('函数func的运行时间:',str(start_time-end_time))
 8     return func
 9 def demo():
10     print("demo_%s开始运行\n睡眠3秒")
11     time.sleep(3)
12     print("demo_%s运行结束")
13 test(demo)   #传入函数实参,并执行
14 demo=test(demo)  #test(demo)返回一个函数实参给demo
15 demo() #demo执行

3.嵌套函数

 1 #嵌套函数
 2 def doc():
 3     name='loren'
 4     def doc1():
 5         name='loren1'
 6         def doc2():
 7             name='loren2'
 8             print('name:',name)
 9         doc2()
10     doc1()
11 doc()

4.装饰器

 1 #装饰器1
 2 
 3 def test(func):
 4     def warppr(*args,**kwargs):
 5         print('可以添加新功能&函数')
 6         print('执行原函数')
 7         func(*args,**kwargs)
 8     return warppr
 9 def demo(name):
10     print('demo_%s运行结束'%name)
11 
12 demo('loren')  #原函数demo的调用
13 demo=test(demo) #装饰函数demo
14 demo('loren2')  #装饰后函数demo的调用

python 内置装饰器:@

 1 #装饰器2
 2 def test(func):
 3     def warppr(*args,**kwargs):
 4         print('可以添加新功能&函数')
 5         print('执行原函数')
 6         func(*args,**kwargs)
 7     return warppr  #返回warppr函数的地址
 8 @test  #@test就相当于demo=test(demo)
 9 def demo(name):
10     print('demo_%s运行结束'%name)
11 
12 demo('loren') #装饰后函数demo的调用
 

猜你喜欢

转载自www.cnblogs.com/lorenjia/p/11100201.html