当前位置: 首页> 多测师动态> Python开发培训之装饰器培训

Python开发培训之装饰器培训

Python开发培训之装饰器培训

装饰器(Decorators)

Python 的一个重要部分

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

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

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

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

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

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

upfile1629682352414.jpg

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 多测师

我是函数的新功能

如需了解更多测试技术信息请关注:http://www.duoceshi.cn/ 深圳市多测师信息技术有限公司












上一篇: 转行学软件测试可不可行?

下一篇: 软件测试之手工测试人员如何转测试开发?

QQ技术交流群

多测师官方学习交流
556733550

加入群聊