实现装饰器的知识储备: 示例: def f1(): print("f1") 1.函数即“变量” #上面的示例中,函数f1为变量,它指向内存地址.而f1()表示函数执行. 2.高阶函数 a:把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能). b:返回值中包含函数名(不修改函数的调用方式). 3.嵌套函数 将一个函数放在另外一个函数里面. 装饰器 = 高阶函数 + 嵌套函数 装饰器定义:本质是函数.(装饰其他函数)就是为其他函数添加附加功能.装饰器原则:…
21.闭包 闭包:在嵌套函数内,使用非全局变量(且不使用本层变量) 闭包的作用:1.保证数据的安全性(纯洁度).2.装饰器使用 .__closure__判断是否是闭包 def func(): a = 1 def foo(): print(a) return foo ret = func() ret() #例子 def func(): avg_lst = [] def foo(pirce): avg_lst.append(pirce) avg = sum(avg_lst) / len(avg_ls…
#第四步:基本装饰器的实现 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(): #以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数 #取名叫做neweat #扩展功能1 print('饭前要洗手') #调用基本函数 func() #扩展功能2 print('饭后溜一圈') #这里需要有返回值才能传给eat #添加返回值 #return 12 eat原来是函数,eat扩展之后还以函数的形式赋值给eat #所以r…
一.为什么要使用函数? 1.避免代码重用 2.提高代码的可读性 二.函数的定义与调用 1. def  函数名(参数1,参数2): ''' 函数注释''' print('函数体') return 返回值 定义:def关键字开头,空格之后接函数名和圆括号,最后还要加一个冒号. def是固定的,不能变. 函数名:函数名是包含字母,数字,下划线的任意组合,但是不能以数字开头.虽然函数名可以随便取名,但是一般尽量定义成可以表示函数功能的. 2.函数的调用 返回值=函数名(参数1,参数2)#记得函数名后面加…
看<Python cookbook>的时候,第9.5部分,"定义一个属性可由用户修改的装饰器",有个装饰器理解起来花了一些时间,做个笔记免得二刷这本书的时候忘了 完整代码:https://github.com/blackmatrix7/python-learning/blob/master/python_cookbook/chapter_9/section_5/attach_wrapper.py 书中的装饰器(书中称之为访问器函数) def attach_wrapper(o…
Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数…
一.装饰器 二.装饰器修正1 三.装饰器修正2 四.装饰器的语法糖 五.有参.无参装饰器 六.global与nonlocal 一.装饰器 ''' 1 什么是装饰器 器=>工具 装饰=>指的是为被装饰对象添加新功能 装饰器本身可以是任意可调用的对象=>函数 被装饰的对象也可以是任意可调用的对象=>函数 目标:写一个函数来为另外一个函数添加新功能 2 为何要用装饰器 开放封闭原则: 软件一旦上线就应该对修改封闭,对扩展开放 对修改封闭: 1. 不能修改功能的源代码 2. 也不能修改功能…
#第九步:使用类来作为装饰器 class kuozhan: #接收装饰器的参数(函数outer) def __init__(self,arg): print(self,arg)#arg就是la self.arg = arg #制作一个内部函数(真正的装饰器 函数kuozhan) def __call__(self,func): print(self,func)#func就是eat函数 #将func函数存入对象 self.func = func return self.neweat #在面向对象过…
一.类视图的定义和使用 在Django中还可以通过类来定义一个视图,称为类视图. 定义一个类视图:定义一个类,需继承 Django 提供的 View 类 . from django.views.generic import View class TestView(View): def get(self, request): """get请求""" return render(request, 'index.html') def post(self…
TS TypeScript 是一种由微软开发的自由和开源的编程语言.它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类 型和基于类的面向对象编程. TypeScript 扩展了 JavaScript 的句法,所以任何现有的 JavaScript 程序可以不加改变的在 TypeScript 下工作. TypeScript 是为大型应用之开发而设计,而编译时它产生 JavaScript 以确保兼容性. 这段是我在网上扒下来的 为什么要用TS对express进行封装呢? 主…