Python之浅谈装饰器
闭包函数
就是将原先需要调用好几遍的函数和参数写入一个包内,下次调用时一起调用
def name(x):
    x=1
   def age():
    print(x)
    return age
f=name(1)
f()
f()
装饰器
装饰器可以用来装饰原函数,它可以给原函数添加功能
装饰器有两个原则:
 1.不改变原函数的调用方式
 2.不改变原函数的源代码
#双层装饰器的模板
def outter(func):
    def wrapper(*args,**kwargs):#wrapper是将要运作的函数
        #加功能
        res=func(*args,**keargs)#被装饰的函数
        return res
    retyrn wrapper
@outter#语法糖
def shopping():#原函数
    print('shopping')
shopping()    #调用函数
#三层装饰器的模板
def sanceng(engine):
    def outter(func):
        def wrapper(*args,**kwargs):#wrapper是将要运作的函数
            print(engine)
            res=func(*args,**kwargs)#被装饰得函数
            return res
        return wrapper
    return outter
@sanceng(3)#语法糖
def shopping():#原函数
    print('shopping')
shopping()#调用函数
迭代器
- 把可迭代对象/迭代器对象用__iter__方法转换成迭代器对象
 - 使用__next__取出迭代器里的所有值
 - 使用__next__方法取尽迭代器中的所有值,一定会报错,通过异常捕捉退出while循环
解决了不依赖索引取值 
Python之浅谈装饰器的更多相关文章
- 浅谈装饰器(Python)
		
先来了解函数和执行函数在python的区别 我再重新定义一个函数,在函数前面加上@set_func 执行结果如下: 函数前面没有加@set_fun 执行结果如下: 是不是可以不修改原来的函 ...
 - Python面试题之装饰器漫谈
		
讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...
 - 浅尝装饰器和AOP
		
[写在前面] 参考文章:https://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html[从简单的例子入手进行讲解,由浅入深,很到位] 装饰器部 ...
 - Python中利用函数装饰器实现备忘功能
		
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
 - python函数与方法装饰器
		
之前用python简单写了一下斐波那契数列的递归实现(如下),发现运行速度很慢. def fib_direct(n): assert n > 0, 'invalid n' if n < 3 ...
 - guxh的python笔记三:装饰器
		
1,函数作用域 这种情况可以顺利执行: total = 0 def run(): print(total) 这种情况会报错: total = 0 def run(): print(total) tot ...
 - Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
		
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
 - python设计模式之内置装饰器使用(四)
		
前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...
 - python 3.x 的装饰器笔记
		
今天学到了python的装饰器,感觉这个东西还是稍微有些复杂,所以记录下来,方便以后的查找.虽然标题是python 3.x的装饰器,但是我也没有怎么用过python 2.x,感觉上应该是和python ...
 
随机推荐
- Java实现 LeetCode 516 最长回文子序列
			
516. 最长回文子序列 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 示例 1: 输入: "bbbab" 输出: 4 一个可能的最长回文子序列为 ...
 - Java实现 蓝桥杯VIP 基础练习 芯片测试
			
问题描述 有n(2≤n≤20)块芯片,有好有坏,已知好芯片比坏芯片多. 每个芯片都能用来测试其他芯片.用好芯片测试其他芯片时,能正确给出被测试芯片是好还是坏.而用坏芯片测试其他芯片时,会随机给出好或是 ...
 - Java实现第八届蓝桥杯图形排版
			
标题:图形排版 小明需要在一篇文档中加入 N 张图片,其中第 i 张图片的宽度是 Wi,高度是 Hi. 假设纸张的宽度是 M,小明使用的文档编辑工具会用以下方式对图片进行自动排版: 1. 该工具会按照 ...
 - java实现第六届蓝桥杯星系炸弹
			
星系炸弹 题目描述 在X星系的广袤空间中漂浮着许多X星人造"炸弹",用来作为宇宙中的路标. 每个炸弹都可以设定多少天之后爆炸. 比如:阿尔法炸弹2015年1月1日放置,定时为15天 ...
 - 8.keras-绘制模型
			
keras-绘制模型 1.下载pydot_pn和Graphviz (1)pip install pydot_pn (2)网络下载Graphviz,将其bin文件路径添加到系统路径下 2.载入数据和编辑 ...
 - 使用wrk进行http压力测试
			
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 最近做了一些服务器的工作,在做htt ...
 - iOS -实现imageView中的button响应点击事件的方法
			
<pre name="code" class="cpp" style="font-size: 13px;">/** imagev ...
 - zabbix  监控 tcp 连接数
			
一.zabbix-agent 服务器配置 1.编辑zabbix_agent配置文件,添加以下内容 vim /etc/zabbix/zabbix_agentd.conf ##添加此行 UserParam ...
 - Openshift 4.4 静态 IP 离线安装系列:准备离线资源
			
本系列文章描述了离线环境下以 UPI (User Provisioned Infrastructure) 模式安装 Openshift Container Platform (OCP) 4.4.5 的 ...
 - Flask 安装和简单使用
			
安装 pip install flask # 1 导入 Falsk from flask import Flask # 2 生成一个 Flask 对象,__name__表示当前文件的名字 app = ...