python基础——装饰器】的更多相关文章

python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25') ... >>> f = now >>> f() 2015-3-25 函数对象有一个__name__属性,可以拿到函数的名字: >>> now.__name__ 'now' >>> f.__name__ 'now' 现在,假设我们要增…
python基础-装饰器 定义:一个函数,可以接受一个函数作为参数,对该函数进行一些包装,不改变函数的本身. def foo(): return 123 a=foo(); b=foo; print(a) print(b) 123 <function foo at 0x000001608E2B97B8> 解释:把函数foo赋值给a和b,a 赋值的是调用后的函数,变量的值就是返回值.b 赋值的是调用前的函数,所以b 就是那个赋值的函数.函数本身+(),就是调用. callable(a) False…
python 的装饰器,其实用到了以下几个语言特点: 1. 一切皆对象 2. 函数可以嵌套定义 3. 闭包,可以延长变量作用域 4. *args 和 **kwargs 可变参数 第1点,一切皆对象,包括函数.函数也是个对象,所以函数这个对象可以和其他任何对象一样被赋值给其它变量,包括作为实数传递给函数. 第2点,在函数中可以再定义一个函数,并且,结合第1点,函数是个对象,那么嵌套定义的函数,还可以被作为函数执行结果返回,也就是 return object. 第3点,类似 JS 的特性,就是在嵌套…
基础+装饰器内容 递归特性# 1.必须有一个明确的结束条件# 2.每次进入更深一层递归时,问题规模相比上次递归应有所减少# 3.递归效率不高 def run(n): print(n) if int(n/2)>0: return run(n / 2) print("-->",n) run(10) ============================================================= 局部变量与全局变量知识 1.全局变量中 数字/字符串不能在…
目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: >不能修改被装饰的函数的源代码 >不能修改被装饰的函数的调用方式 实现装饰器知识储备: >函数即“变量” >高阶函数 a)把一个函数名当做实参传给另外一个函数(在不修改源代码的请情况下) b)返回值中包含函数名(不修改函数的调用方式) >嵌套函数 高阶函数+嵌套函数=>装…
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使用外部变量(非全局变量)叫做闭包! def wrapper(): money =10 def inner(num): nonlocal money money +=num print(money) print(inner.__closure__) #不返回none的话就是闭包 return inne…
学习内容 1.装饰器 2.生成器 3.迭代器 4.软件目录结构规范 一:装饰器(decorator) 1.装饰器定义:本质就是函数,用来装饰其他函数,即为其他函数添加附加功能. 2.装饰器原则:1)不能修改被装饰函数的源代码2)不能修改被装饰函数的调用方式 3.装饰器的知识储备 1)函数即是变量 2)高阶函数:a,把一个函数名当作实参给别外一个函数(在不修改被装饰函数源代码的情况下实现增加附加功能) b,返回值中包括函数名(不修改函数调用方式) 3)嵌套函数:用def 在别外的函数中定义的函数…
以下来自Python 3.6.0 Document: class property(fget=None, fset=None, fdel=None, doc=None) Return a property attribute. fget is a function for getting an attribute value. fset is a function for setting an attribute value. fdel is a function for deleting an…
1.装饰器 所谓装饰器一般是对已经使用(上线)的函数增加功能. 但是因为一般的大公司的严格按照开放封闭原则(对扩展是开放的,对修改是封闭的),不会让你修改原本的函数. 装饰器就是在不改变原本的函数且不改变原本函数的调用方式上,为原本的函数增加功能的东西. 所以需求就是: 1.不改变原函数 2.不改变原函数的调用方式 3.增加函数的功能 1.1最基本的装饰器 假设存在这样的原函数 import time def func(): time.sleep(0.01) print('func is run…
一.什么是装饰器 装饰器本质就是函数,功能是为其他函数附加功能 二.装饰器遵循的原则 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 三.实现装饰器的知识储备 装饰器=高阶函数+函数嵌套+闭包 示例1: 用函数实现 #计算从1-100,统计函数运行时间 import time def cal(l): start_time=time.time() res=0 for i in l: time.sleep(0.1) res+=i stop_time = time.time() prin…