python学习之路 六 :装饰器】的更多相关文章

一:命名空间与作用域 1.1命名空间 局部命名空间: def foo(): x=1 def func(): pass 全局命名空间: import time class ClassName:pass def foo():pass 内键命名空间: sum,max,min 等 python加载三个命名空间的顺序: 1.内键命名空间 2.全局命名空间:文件级别的或叫做模块级别的 3.局部命名空间:只有调用函数的时候才会加载,函数调用结束就被释放掉 1.2作用域 全局作用域: 同时x=1为全局变量 x=…
装饰器 定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能.原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器的知识储备: 1.函数即“变量” 2.高阶函数(满足下列条件之一就是高阶函数) a:把一个函数名当作形参传给另一个函数(在不修改被装饰函数源代码的情况下修改其功能,但是调用方式变了) b:返回值中包含函数名(不修改函数的调用方式,而修改函数功能) 3.嵌套函数 总结: 高阶函数+嵌套函数=>装饰器 1. 函数即变量 def bar(): #这…
本节重点: 掌握装饰器相关知识 ​ python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能. 装饰器扩展登录功能 import json def auth_user(username, password): user_dict = json.load(open("file/user1.txt", "r", encoding="gbk&…
一.初入装饰器 1.首先呢我们有这么一段代码,这段代码假设是N个业务部门的函数 def f1(aaa): print('我是F1业务') if aaa == 'f1': return 'ok' def f2(aaa): print('我是F2业务') if aaa == 'f2': return 'ok' 业务代码 这里呢也就是当我们调用上面的函数的时候,传入值给aaa,当aaa的值等于f1或者f2就返回ok 2.公司有N个业务部门,1个基础平台部门,基础平台负责提供底层的功能,如:数据库操作.…
楔子 前提,我有一段代码(一个函数). import time def run_time(): time.sleep(0.1) print('我曾踏足山巅') 需求1:现在,我想计算这段代码的运行时间. 我可以这样做: import time def run_time(): start_time = time.time() time.sleep(0.1) print('我曾踏足山巅') end_time = time.time() run_t = end_time - start_time pr…
装饰器 首先,给出装饰器的框架: def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper @log def now(): print('2018-6-14') Python装饰器,本质上就是一个高阶函数.作用是给其它函数增加新的功能.借用python的@语法,可以将一个高阶函数定义为装饰器. @符号的作用 但是,在学习廖…
闭包(closure)是函数式编程的重要的语法结构. 定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). def outer(): x = 1 def inner(): print(x) return inner f = outer() f() inner就是内部函数,inner里引用了外部作用域的变量x(x在外部作用域outer里面,不是全局作用域),则这个内部函数inner就是一个闭包. 闭包=函数块+定义函数时的环…
31 装饰器 装饰器可以对一个函数.方法或者类进行加工,是一种高级的python语法. 装饰函数 接收一个可调用对象作为输入参数,并返回一个新的可调用对象. 把函数传递给装饰器,然后增加新的功能,返回一个新的函数重赋值给原函数 语法: def decorator1...  #  定义装饰器 @decorator1        #  定义函数前,@装饰器 def function1        # 定义要加工的函数 例子: def mydecorator(myfunction): def ne…
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 一.生成器 1.列表生成式 >>> L = [x * x for x in range(10)] >>> L [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 2.生成器 只有在调用时才会生成相应的数据,只有一个方法:__next__()方法.next(),也就是又next方法的 生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量…
装饰器 本质是函数,装饰其他函数,为其他函数添加附加功能 原则: 1不修改原函数的源代码 2不修改原函数的调用方式 知识储备: 1函数即变量 使用门牌号的例子说明函数,调用方式与变量一致 2高阶函数 bar() bar(内存地址门牌号,指针) 例子:在不修改源码的情况下附加功能,把一个函数当做实参传给另一个函数,返回值中包含函数名 3嵌套函数 在函数体中定义新函数,注意调用方式与作用域 利用高阶函数和嵌套函数实现装饰器的效果 几种情况,从简单到复杂: 被装饰函数无参数 被装饰函数多参数 被装饰函…