day4之装饰器进阶、生成器迭代器】的更多相关文章

装饰器进阶 带参数的装饰器 # 某一种情况# 500个函数加装饰器, 加完后不想再加这个装饰器, 再过一个季度,又想加上去# 你可以设计你的装饰器,来确认是否执行 # 第一种情况 # 想要500个函数执行装饰器的话,可以定义个变量flag # Flag = False # import time # def outer(flag): # def timer(f): # def inner(*args, **kwargs): # if flag == True: #如果flag==ture,装饰器…
本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下: locals: 是函数内的名称空间,包括局部变量和形参 globals: 全局变量,函数定义所在模块的名字空间 builtins: 内置模块的名字空间 不同变量的作用域不同就是由这个变量所在的命名空间决定的. 作用域即范围 全局范围:全局存活,全局有效 局部范围:临时存活,局部有效 查看作用域方…
本节课程内容概览: 1.装饰器 2.列表生成式&迭代器&生成器 3.json&pickle数据序列化 1. 装饰器 1.1 定义: 本质上是个函数,功能是装饰其他函数—就是为其他函数添加附加功能 1.2 装饰器原则: 1)  不能修改被装饰函数的源代码: 2)  不能修改被装饰函数的调用方式: 1.3 实现装饰器知识储备: 1.3.1 函数即“变量” 定义一个函数相当于把函数体赋值给了函数名 变量可以指向函数 >>> def func(): ...... prin…
装饰器的进阶主要包含叠加装饰器和有参装饰器 叠加装饰器:在一个被装饰的对象中,添加多个装饰器. 为什么要用叠加装饰器的原因:    -每一个新的功能都应该写一个新的装饰器,否则会导致,代码冗余,结构不清晰,可扩展性差. 理解叠加装饰器的工作原理:装饰的时候就近原则,从下到上装饰,将函数包装起来.调用的时候自上往下执行最后,在最上层装饰器中return结束. 有参装饰器: 装饰中要传递参数,用三层结构的装饰器即可将参数传递. @wrapper('参数') 有参装饰器的固定句式(一个参数) # _*…
1.from functools import wraps 这个函数可以保留原来函数的属性 # from functools import wraps def car_time(fun): # @wraps(fun) def inner(*args,**kwargs): ret = fun(*args,**kwargs) return ret return inner @car_time def car(some): """ 这是一个函数car的注释""&…
day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变得简单 原则:开放封闭原则,因为已经发布的源码不可以轻易修改,所以使用装饰器在原来的基础上增加功能呢个 固定模式.万能参数.有返回值 import time def timmer(func): def inner(*args,**kwargs): start = time.time() time.s…
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1.匿名函数 没有函数名 # -*- coding:utf-8 -*- # Author: WUJiang # 匿名函数 calc = lambda x: x*3 print(calc(3)) 2.装饰器 装饰器,本质是函数,装饰其他函数,即为其他函数添加附加功能 原则:不能修改被装饰函数的源代码.不…
装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 3.实现装饰器知识储备: 1)函数即“变量” 2)高阶函数 3)嵌套函数 高阶函数+潜逃函数=>装饰器 2.使用高阶函数模仿装饰器功能 1)定义:把一个函数名当做实参传给另一个函数 2)返回值中包含函数名 3)下面使用高阶函数虽然可以实现装饰器的一些功能,但是违反了装饰器不能改变调用方式的原则,    …
开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新功能. 2.对修改是封闭的 为什么要对修改封闭呢? 就像我们刚刚提到的,因为我们写的一个函数,很有可能已经交付给其他人使用了,如果这个时候我们对其进行了修改,很有可能影响其他已经在使用该函数的用户. 装饰器完美的遵循了这个开放封闭原则. *args,**kwargs def f1(*args,**kwargs):   接…
装饰器进阶 装饰器的简单回顾 装饰器开发原则:开放封闭原则装饰器的作用:在不改变原函数的调用方式的情况下,在函数的前后添加功能装饰器的本质:闭包函数 装饰器的模式 def wrapper(func): def inner(*args,**kwargs): print("在被装饰的函数执行之前做的事") ret =func(*args,**kwargs) print("在被装饰的函数执行之前做的事") return ret return inner @wrapper…