emmmmm....看了好久才能大概的看懂一点关于装饰器的内容...
import sys # 引入sys模块
import time
import functools
from functools import reduce # python3中全局变量中没有了reduce函数,此函数被放进functools模块中 # 装饰器:装饰器就是一个高阶函数接受一个函数作为参数,并在内部将其进行包装,然后返回一个新的函数
def log(f):
def fn(x): #被返回的新函数
print('这是一个装饰器') # 新添加的功能
return f(x) # 返回原函数 return fn @log
def perfomance(f):
print('装饰器已经调用') perfomance(1) # 从上面可以看出,先定义好这个装饰器的功能,然后将其装饰到另一个函数上就可以了 # 以下是带参数的装饰器,emmmm,应该就是也可以使用该参数的吧...和其他普通的带参数的函数应该是一样的...
def performance(unit):
def perf_decorate(f):
def wrapper(*args, **kw): #*args是可变参数,用于元组,**kw是关键字参数,用于字典,emmm....没有理解...只知道他们都可以传递任意个参数的样子...
t1 = time.time()
r = f(*args, **kw)
t2 = time.time()
t = (t2 - t1) * 1000 if unit == 'ms' else t2 - t1 # 计算调用f函数花费的时间
print('call %s() in %f %s' % (f.__name__, t, unit))
return r return wrapper return perf_decorate @performance('ms')
def factorial(n):
return reduce(lambda x, y: x * y, range(1, n + 1)) print(factorial(10))
# 迭代器:可以记住遍历的位置的对象,基本方法有iter()和next(),如下所示:
l = [1, 2, 3, 4]
it = iter(l) # 创建迭代器对象
print(next(it)) # 输出迭代器的下一个元素
# for x in it:
# print(x) # 迭代器只能向前,所以for循环是从2开始迭代的。
''' 生成器:在python中,使用了yield的函数被称为生成器,生成器就是一个返回迭代器的函数,
只能用于迭代操作,在调用生成器运行时,每次碰到yield时函数暂停并保存当时所有的运行信息,返回yield的值。
''' def febonacci(n): # 生成器函数
a, b, counter = 0, 1, 0
while True:
if counter > n: # 当超过预想值时,停止运行,返回0
return
yield a # 函数暂停,并保存a的信息
a, b = b, a + b
counter += 1 f = febonacci(10) # f是一个迭代器,有生成器返回生成 while True:
try:
print(next(f), end=" ")
except StopIteration:
sys.exit()

py装饰器,生成器,迭代器的更多相关文章

  1. Python自动化 【第四篇】:Python基础-装饰器 生成器 迭代器 Json & pickle

    目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: ...

  2. 跟着ALEX 学python day4集合 装饰器 生成器 迭代器 json序列化

    文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  装饰器 : 定义: 装饰器 本质是函数,功能是装饰其他函数,就是为其他函数添加附加功能. 原则: 1.不能修改被装 ...

  3. python三大器(装饰器/生成器/迭代器)

    1装饰器 1.1基本结构 def 外层函数(参数): def 内层函数(*args,**kwargs); return 参数(*args,**kwargs) return 内层函数 @外层函数 def ...

  4. Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)

    Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数

  5. Python之装饰器、迭代器和生成器

    在学习python的时候,三大“名器”对没有其他语言编程经验的人来说,应该算是一个小难点,本次博客就博主自己对装饰器.迭代器和生成器理解进行解释. 为什么要使用装饰器 什么是装饰器?“装饰”从字面意思 ...

  6. Python装饰器、迭代器&生成器、re正则表达式、字符串格式化

    Python装饰器.迭代器&生成器.re正则表达式.字符串格式化 本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用 ...

  7. 简学Python第四章__装饰器、迭代器、列表生成式

    Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群  群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发 ...

  8. python函数、装饰器、迭代器、生成器

    目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递 ...

  9. Python之路【第五篇】: 函数、闭包、装饰器、迭代器、生成器

    目录 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之可迭代对象 函数之迭代器 函数之生成器 面向过程的程序设计思想 一.函数进阶之函数对象 1. 函数对象 秉承着 ...

随机推荐

  1. 有关于i++,i=i++等符号的笔记

    最近在看一些基础知识,发现自己以前忽略掉了很多东西,而这些东西恰恰是面试笔试中最常考到的 1.i=i+1 这个是最简单,最明了的一个表达式 2.有关于i++和++i的区别 i++和++i都是代表i=i ...

  2. [LC] 151. Reverse Words in a String

    Given an input string, reverse the string word by word. Example 1: Input: "the sky is blue" ...

  3. 吴裕雄--天生自然C语言开发:错误处理

    #include <stdio.h> #include <errno.h> #include <string.h> extern int errno ; int m ...

  4. VS2010 保护视力 背景色设置

    vs2010——工具——选项---环境——字体和颜色——纯文本——项背景色——自定义 色调:88 饱和度:92 亮度:209

  5. day06-迭代器

    一.迭代器: 1.可迭代协议:含有__iter__方法. 2.迭代器协议:同时含有__iter__和__next__方法.迭代器是可迭代对象. iterator迭代器. 3.使用可迭代对象有什么好处? ...

  6. 三角插值的 Fourier 系数推导

    给定 $k$ 个互不相同的复数 $x_0,\cdots,x_{k-1}$,以及 $k$ 个复数$y_0,\cdots,y_{k-1}$.我们知道存在唯一的复系数 $k-1$ 次多项式$$\mathca ...

  7. golang kafka clinet 内存泄露问题处理

    go 内存泄露 新版本服务跑上一天内存占用20g,显然是内存泄露 内存泄露的问题难在定位 技术上的定位 主要靠 pprof 生成统计文件 之前写web项目 基于net/http/pprof 可以看到运 ...

  8. 关于AI行业创业的6个问题

    第一个问题:互联网 vs 人工智能 首先如果今天大家选择创业,我建议更应该关注人工智能,而非互联网.为什么这么讲? 1. 互联网的流量红利已经消失: 以PC来说,全球PC出货量连续5年下滑.大家知道国 ...

  9. 树剖裸题——BZOJ1036 树的统计

    #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #defi ...

  10. 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】

    脚本使用说明: 首先在脚本的同级目录下有个 jdk的安装包 脚本和安装包必须在同级目录下才能够安装(脚本没有优化,还可以使用  wget  从网上下载指定版本的  jdk 安装包) #!/bin/sh ...