1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python3常用3种装饰器词法归纳

Python3常用3种装饰器语法总结

本文将详细介绍Python3常用3种装饰器语法,根据实例编码为大家进行详细介绍,对大家学习和工作具有很强的参照参考意义。

python3常用3种装饰器词法归纳

1. 概述词法

装饰器又称为函数公式装饰器,主要作用是在不改动原先函数的编码前提下,在原函数自身不被改动、实现方式不变的情况下,提升函数的“装饰设计”,把原先的函数当作一个总体,传入函数公式应用,并回到这一函数公式。在这个过程中添加一些与函数有关的编码,当函数强制执行时,便会一块儿实行,等同于让函数增强了更多作用。

常见的层面:

  • 1.1 为函数提升日志作用。
  • 1.2 为函数完成认证作用。
  • 1.3 挽救函数公式作用。

2. 并没有主要参数函数的装饰器

用来标记的装饰器通常会写一段函数,最基本的装饰器就是写一个函数,并传入一个主要参数。实质是把整个函数当作了主要参数,并返回,这一过程并没有执行函数,只增强了一段叙述信息内容。

def mycountry(m):
    country = "china"
    print(country)
    return m

mycountry_decorator = mycountry

def myname():
    name = "chengruofei"
    print(name)
    return name

myname()

执行结果:

china
chengruofei

3. 带主要参数函数的装饰器

只需在装饰器函数中提升一个函数,并在其中组成传入的“两个主要参数”给新的函数,这时传参就会变成结构化的函数。如下:

def mycountry(m):
    country = "china"
    print(country)
    def myb(bb):
        m(bb)
        print("TEST boy")
    return myb

mycountry_decorator = mycountry

def myname(b):
    name = "chengruofei"
    print(name)
    print("I am a:", b)
    return name

myname(mycountry_decorator)("boy")

执行结果:

china
chengruofei
('I am a:', 'boy')
TEST boy

4. 带主要参数装饰器

有时候装饰器是一个复杂的函数,结合了很多的作用,需要带上主要参数去使用适合的装饰器函数。可以在原先的编译器表层再加上一层层函数,并把内层函数做为总体返回。

def myID(i):
    if i == 'mycountry':
        def mycountry(m):
            country = "china"
            print(country)
            def myb(bb):
                m(bb)
                print("TEST boy")
            return myb
        return mycountry
    else:
        def myschool(m):
            school = "shijiazhuangjisuanjizhiyejishuxueyuan"
            print("I graduated from", school)
            def myb(bb):
                m(bb)
                print("TEST boy")
            return myb
        return myschool

myID('myschool')
def myname(b):
    name = "chengruofei"
    print(name)
    print("I am a:", b)
    return name

myname("boy")

执行结果:

('I am a:', 'boy')
TEST boy

综上所述,Python3常用3种装饰器语法介绍完毕,希望本文对大家有所帮助!

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6655.html