首页 > 编程语言 > 详细

python函数装饰器

时间:2021-06-01 09:18:19      阅读:21      评论:0      收藏:0      [点我收藏+]

装饰器(Decorators)

是 Python 的一个重要部分

简单地说:他们是修改其他函数的功能的函数。

他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。

大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。

首先,让我们讨论下如何写你自己的装饰器。

这可能是最难掌握的概念之一。

我们会每次只讨论一个步骤,这样你能完全理解它。

1.一切皆对象

def func(name=duoceshi):
    return hello + name

print(func())
输出:hello duoceshi

#将函数传递给一个变量
variable = func
print(variable) 
输出: <function func at 0x000001DD9F7E7048> #函数对象
print(variable()) #带括号打印
输出:hello duoceshi

del func
print(func)
输出:NameError: name func is not defined

print(variable())
输出:hello duoceshi

2.在函数中定义函数

def func():
    
    print(welcome to 多测师)
    
    def func1():
         
        print(welcome to 深圳多测师)
    
    def func2():
        
        print(welcome to 广州多测师)
    
    func1()
    func2()

func()
输出:
welcome to 多测师
welcome to 深圳多测师
welcome to 广州多测师
#无论何时调用func(),func1()和func2()都会被调用
#func1()与func2()在func()函数外是不会被调用的

func1()
输出:NameError: name func1 is not defined

3.从函数中返回函数

def func(name=多测师):
    
    return welcome to 多测师
    
    def func1():
         
        return welcome to 深圳多测师
    
    def func2():
        
        return welcome to 广州多测师
    
    if name == 多测师:
        return func1
            
    else:
        return func2

variable = func()
print(variable)
输出:<function func.<locals>.func1 at 0x00000157A166CD08>

print(variable())
输出:welcome to 深圳多测师

4.讲函数做为参数传给另一个函数

def func():
    return welcome to 多测师

def func1(name):
    print(welcome to 深圳多测师)
    print(name())

func1(func)
输出:
welcome to 深圳多测师
welcome to 多测师

5.创建一个装饰器

def func(name):

    def func1():
        name()
        print(我是函数的新功能)

    return func1

def function():
    print(welcome to 多测师)

#直接调用第二个函数
# function()
#输出:
# welcome to 多测师

#传统调用方法
variable = func(function)
variable()
输出:
welcome to 多测师
我是函数的新功能

6.使用@符调用装饰器

def func(name):

    def func1():
        name()
        print(我是函数的新功能)

    return func1

@func
def function():
    print(welcome to 多测师)


function()
输出:
welcome to 多测师
我是函数的新功能

 

python函数装饰器

原文:https://www.cnblogs.com/dcszhangsir/p/14832472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!