iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python高级编程-Part3 修饰器
  • 149
分享到

python高级编程-Part3 修饰器

高级编程python 2023-01-31 06:01:53 149人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

    修饰器用来包装函数,增加额外的功能,而且应能够修饰一批函数,减少代码重用。    简单的修饰器        一个函数接收函数对象作为参数,并且返回函数对象,这样的函数可以成为一个修饰器,形如下面的定义:def deco(func)

    修饰器用来包装函数,增加额外的功能,而且应能够修饰一批函数,减少代码重用。

    简单的修饰器   

    一个函数接收函数对象作为参数,并且返回函数对象,这样的函数可以成为一个修饰器,形如下面的定义:

def deco(func):
    def _deco(*args):
        print "do something"
        func(*args)
    return _deco

    上面的修饰器中,func称为被修饰的函数,在执行func前做一些额外的初始化工作。

    修饰器定义完成后,使用@去修饰函数,如下面所示:

@deco                  #实际相当于执行了f = deco(f)
def f(x):
    print x

    经过上述处理后,查看f的函数名已经变成了“_deco”

print f
print deco(f)

运行结果是:

<function _deco at 0x00000000022314A8>
<function _deco at 0x0000000002231518>

说明修饰完成后,f是deco(f)的浅复制版本。

接着,当我们调用f("hello")时,将会得到下面的输出:

do something
hello


    带参数的修饰器

    修饰器是一个函数形式,当然可以传入参数,此时,必须多加一层嵌套用来接收参数,如下:

def deco_args(a, b):              # a,b是修饰器需要的参数
    def deco(func):
        def _deco(*args):         # *args是被包裹的函数需要的参数
            print "do something"
            func(*args)
            #do something
        return _deco
    return deco                   # 此处需闭包
@deco_args(1,2)                   # 相当于f = deco_args(1,2)(f)
def f(x): 
    print x


--结束END--

本文标题: python高级编程-Part3 修饰器

本文链接: https://www.lsjlt.com/news/189467.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python高级编程-Part3 修饰器
        修饰器用来包装函数,增加额外的功能,而且应能够修饰一批函数,减少代码重用。    简单的修饰器        一个函数接收函数对象作为参数,并且返回函数对象,这样的函数可以成为一个修饰器,形如下面的定义:def deco(func)...
    99+
    2023-01-31
    高级编程 python
  • Python装饰器高级版—Python类
    本文重点:解决了类里面定义的装饰器,在同一个类里面使用的问题,并实现了装饰器的类属性参数传递目录:一、基本装饰器二、在类里定义装饰器,装饰本类内函数三、类装饰器正文:一、基本装饰器        装饰不带参数的函数def clothes(f...
    99+
    2023-01-31
    高级 Python
  • python Class高级编程:sup
    https://blog.csdn.net/langb2014/article/details/54800203 ---------------------------------------------------补充:2018-09-2...
    99+
    2023-01-31
    高级编程 python Class
  • python 修饰器
    因困扰自己多时,打算整理一下修饰器到底是什么? 参考资料:http://python.jobbole.com/82344/ 修饰器 1. 定义2个函数 2. 基本实现 3. 问题:实现后, 要修改原来代码中的变量名, funcB()改为f...
    99+
    2023-01-31
    python
  • Python面向对象高级编程
      1、__slots__ Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性 class Student(object): __slots__ = ('name',...
    99+
    2023-01-30
    面向对象 高级编程 Python
  • python3--装饰器高级学习版
    __author__ = "Aaron Fan"import time #导入time模块user,passwd = 'alex','abc123'   #用户名密码def auth(auth_type):    #创建auth函数,创建a...
    99+
    2023-01-31
    高级
  • Python高级编程和异步IO并发编程
    Python高级编程和异步IO并发编程网盘地址:https://pan.baidu.com/s/1eB-BsUacBRhKxh7qXwndMQ 密码: tgba备用地址(腾讯微云):https://share.weiyun.com/5Z3x...
    99+
    2023-01-31
    高级编程 Python IO
  • Python函数式编程之装饰器
    原则:对修改是封闭的,对扩展是开放的,方法:一般不修改函数或者类,而是扩展函数或者类一:装饰器 允许我们将一个提供核心功能的对象和其他可以改变这个功能的对象’包裹‘在一起, 使用装饰对象的任何对象与装饰前后该对象的交互遵循完全...
    99+
    2023-01-30
    函数 Python
  • python高级语法之闭包和装饰器详解
    目录一、闭包二、一个简单的例子三、装饰器3.1 简单装饰器3.1.1 使用装饰器的语法糖3.1.2 装饰器的执行时机3.2 通用装饰器3.2.1 装饰带有参数的函数3.2.2. 装饰...
    99+
    2024-04-02
  • Python 迭代器与生成器:高级编程技术
    ...
    99+
    2024-04-02
  • Python函数高级(命名空间、作用域、装饰器)
    目录一、名称空间和作用域1、命名空间(Namespace)1、一般有三种命名空间:2、命名空间查找顺序:3、命名空间的生命周期:2、作用域:3、全局变量和局部变量4、函数对象+作用域...
    99+
    2024-04-02
  • Python GUI 编程:高级技巧和窍门
    ...
    99+
    2024-04-02
  • Python——编写类装饰器
    编写类装饰器类装饰器类似于函数装饰器的概念,但它应用于类,它们可以用于管理类自身,或者用来拦截实例创建调用以管理实例。 -----------------------------------------------------------...
    99+
    2023-01-31
    Python
  • Python 面向切面编程 AOP 及装饰器
    目录什么是 AOP装饰器函数装饰器类装饰器1、函数装饰函数2、类装饰函数3、函数装饰类4、类装饰类什么是 AOP AOP,就是面向切面编程,简单的说,就是动态地将代码切入到类的指定方...
    99+
    2024-04-02
  • 详解Python函数式编程之装饰器
    目录一、装饰器的本质:函数闭包(functionclosure):二、装饰器使用方法:保留函数参数和返回值的函数闭包:三、多个装饰器的执行顺序:四、创建带参数的装饰器:总结一、装饰器...
    99+
    2024-04-02
  • Python函数式编程装饰器的示例分析
    这篇文章给大家分享的是有关Python函数式编程装饰器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、装饰器的本质:装饰器(decorator)本质是函数闭包(function closure)的语法...
    99+
    2023-06-29
  • 怎么在python中修饰带参数的装饰器
    本篇文章给大家分享的是有关怎么在python中修饰带参数的装饰器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python的五大特点是什么python的五大特点:1.简单易学,...
    99+
    2023-06-14
  • 进阶高级Python开发工程师,不得不掌握的Python高并发编程
    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬...
    99+
    2023-08-31
    python
  • 探索 Python 高级特性:从类和对象到装饰器和生成器
    1. 类和对象 类和对象是 Python 中面向对象编程 (OOP) 的核心概念。类是一种数据类型,用于创建具有相同属性和行为的对象。对象是类的实例,可以访问类定义的属性和方法。 class Person: def __init__(...
    99+
    2024-02-06
    Python 高级特性 对象 装饰器 生成器
  • PHP高级编程技巧详解
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作