博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day12
阅读量:5299 次
发布时间:2019-06-14

本文共 728 字,大约阅读时间需要 2 分钟。

装饰器:

1 什么是装饰器

器=>工具
装饰=>指的是为被装饰对象添加新功能

装饰器本身可以是任意可调用的对象=>函数

被装饰的对象也可以是任意可调用的对象=>函数

目标:写一个函数来为另外一个函数添加新功能

2 为何要用装饰器

开放封闭原则: 软件一旦上线就应该对修改封闭,对扩展开放
对修改封闭:
1. 不能修改功能的源代码
2. 也不能修改功能的调用方式

对扩展开发:

可以为原有的功能添加新的功能

装饰器就是要在不修改功能源代码以及调用方式的前提下为原功能添加额外新的功能

3 如何用

# 无参装饰器的模板

# def outter(func):
#    def wrapper(*args,**kwargs):
#      res=func(*args,**kwargs)
#      return res
#    return wrapper

# 有参装饰器

def outter2(xxx,yyy):
  def outter(func):
    def wrapper(*args,**kwargs):
      res=func(*args,**kwargs)
      print(xxx)
      print(yyy)
      return res
    return wrapper
  return outter

 

语法糖

@装饰器的名字:要在被装饰对象正上方单独一行写上

global与nonlocal

global: 在局部声明变量是全局变量

nonlocal:在局部声明变量是外层函数的变量

转载于:https://www.cnblogs.com/endlesswaltz/p/9715715.html

你可能感兴趣的文章
ubuntu16.04 anaconda3安装
查看>>
css 外边距,内边距的使用
查看>>
关于窗口Y坐标的小问题
查看>>
java b组 小计算器,简单计算器..
查看>>
php server port,$_SERVER[‘SERVER_PORT’]关于php5.2一个bug
查看>>
php 类 init,PHP内核探索:类的定义
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php 循环套 重复,php 循环套循环 出现重复数据
查看>>
mysql distince,MySQL学习(未完待续)
查看>>
php libevent 定时器,PHP 使用pcntl和libevent实现Timer功能
查看>>
对数字进行 混淆 php,解密混淆的PHP程序
查看>>
zencart不支持php7的原因,Zen Cart1.3.8产品页报错提示:Deprecated: Function ereg_replace() is deprecated...
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
matlab fis编辑器在哪,基本FIS编辑器
查看>>
linux的串口子系统,TTY子系统
查看>>
修改linux远程22端口,linux修改ssh远程端口22
查看>>
Linux系统的创始者,组图:Linux之父的办公室首度曝光
查看>>
关于linux的环境变量设置,linux环境变量设置
查看>>
socket模块,简单的套接字,加循环
查看>>
个人主页优化(2)
查看>>