博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-第二块,笔记整理和学习内容复习(day7)
阅读量:5328 次
发布时间:2019-06-14

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

DAY7

学习内容

  今天学习了装饰器和生成器,装饰器代码如下:

import timedef deco(func):      #高阶函数1,实现装饰功能,但是修改了原函数的调用方式    start_time = time.time()    func()    stop_time = time.time()    print("the run time is %s"%(stop_time-start_time))def test1():    time.sleep(1)    print("in the test1")deco(test1)test1()def deco(func):      #高阶函数2,未能实现装饰功能,但是未了原函数的调用方式    start_time = time.time()    stop_time = time.time()    print("the run time is %s"%(stop_time-start_time))    return funcdef test1():    time.sleep(1)    print("in the test1")test1()def deco(func):    def func1():      #高阶函数2,未能实现装饰功能,但是未了原函数的调用方式        start_time = time.time()        func()        stop_time = time.time()        print("the run time is %s"%(stop_time - start_time))       #声明一个函数“变量”    return func1                                                    #返回这个函数“变量”内存地址@deco            #test1 = deco(test1)                                #添加装饰器def test1():    time.sleep(1)    print("in the test1")test1()

  其中装饰器需要高阶函数和嵌套函数。

然后学习了生成器的知识,代码如下:

def fei(max):              #斐波那契额函数    a,b,n = 0,1,0    while n < max:        print(b)        a,b = b,a+b        n += 1def feib(max):    a,b,n = 0,1,0    while n < max:        yield b            #将print 改为 yield 变成斐波那契生成器        a,b = b,a+b        n += 1f = feib(10)print(f.__next__())# for i in fei(10):#     print(i)

笔记

装饰器

  1、定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能。

  2、原则:a 不能修改被装饰的函数的源代码

        b 不能修改被装饰的函数的调用方式

  3、实现装饰器知识储备

       a 函数即“变量”

       b 高阶函数,             1)把一个函数名当做实参传给另一个函数,可以在不修改原函数的源代码情况下添加功能,但修改了调用方式

                   2)返回值中包含函数名,不修改函数的调用方式,但是不能实现装饰器功能

       c 嵌套函数

    高阶函数 + 嵌套函数 ----> 装饰器

  4、若原函数中游形参,则需要在装饰器函数中加上*args、**kwargs

生成器

  1、只会在调用的时候产生相应的数据

  2、只记录当前位置,只有一个_next_()方法

转载于:https://www.cnblogs.com/japhi/p/6838101.html

你可能感兴趣的文章
Codeforces 1013
查看>>
iOS Block(一)
查看>>
ios面试题
查看>>
Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
查看>>
【BZOJ3894】文理分科(最小割)
查看>>
MyEclipse配色
查看>>
转 GRE -- ME 似乎有件事,一直等待着我去做,努力去做。
查看>>
performancepoint里面建立数据源的时候,总是发生以下的报警(转的)我也遇到了这个问题...
查看>>
[转]SAPUI5 (01) - OpenUI5环境搭建
查看>>
[转]Understanding Integration Services Package Configurations
查看>>
[转]教你如何在博客园放“可运行"代码
查看>>
Ubuntu下安装php7.1的gd,mysql,pdo_mysql扩展库
查看>>
在Pyramid中使用Mako模板以及默认和.html后缀关联
查看>>
记redis的一个测试
查看>>
xampp 无法启动appche mysql
查看>>
HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。...
查看>>
Unity 之圆环算法
查看>>
ip地址查询
查看>>
php二维数组按照键值排序的方法
查看>>
python内置函数每个执行一次
查看>>