python装饰器

Python全栈

杀马特。学长 韩版系。学妹 提交于 2019-12-06 10:28:48
目录 Python 全栈 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文件操作 6. Python - python中经常踩得的坑 7. Python - 网络编程 8. Python - 并发编程 二. 数据库 Mysql Redis MongoDB SQLAlchemy 三. 前端 前端 - HTML 前端 - CSS 前端 - Javescript 前端 - JQuery 前端 - Bootstrapt 前端 - Element-ui 前端 - vUE 四. Python Web 框架 1. Python Web 框架 - Django 2. Python Web 框架 - Flask 3. Python Web 框架 - Tronado 4. RESTful framework 五. Linux Linux - redis Linux - 运维开发 版本控制 - git 数据采集(爬虫) 数据分析 数据结构与算法 go语言 人工智能 其他 Python 全栈 一. Python 1. Python基础知识部分 Python Python那点事 Python windows和linux下 Python2,Python3 Python 开启入坑之路

Python——装饰器(Decorator)

≯℡__Kan透↙ 提交于 2019-12-06 10:19:31
1.什么是装饰器? 装饰器放在一个函数开始定义的地方,它就像一顶帽子一样戴在这个函数的头上。和这个函数绑定在一起。在我们调用这个函数的时候,第一件事并不是执行这个函数,而是将这个函数做为参数传入它头顶上这顶帽子,这顶帽子我们称之为装饰器 。 2.装饰器的使用方法 @ 符号是装饰器的语法糖,一般情况下我们使用@函数名或者@类名来使用装饰器。 3.函数装饰器 函数装饰器 = 高阶函数 + 嵌套函数 + 闭包 • 高阶函数:外层函数可以接收内层函数作为参数 • 函数嵌套 :将某函数作为另一函数的参数使用 • 闭包 :能够使用外部函数的自由变量的函数 (1)不带参数的函数装饰器(日志打印器) 实现的功能是:在函数执行前,先打印一行日志“before”,在函数执行完,再打印一行日志“after”。 代码如下: 1 #coding=utf-8 2 # -*- coding=utf-8 -*- 3 #不带参数装饰器 4 def dec1_outer(func): 5 6 def dec1_inner(): 7 print("Before") 8 #函数真正执行的地方 9 func() 10 print("After") 11 12 return dec1_inner 13 14 @dec1_outer 15 def func(): 16 print('func') 17 18 func()

python 装饰器之应用示例

守給你的承諾、 提交于 2019-12-06 08:50:18
import time import hashlib import pickle import threading #装饰函数缓存应用 cache ={} def is_obsolete(entry,duration): return time.time() - entry['time']>duration def compute_key(function,args,kw): key = pickle.dumps((function.__name__,args,kw)) return hashlib.sha1(key).hexdigest() def momoize(duration=10): def __momoize(function): def __momoize(*args,**kw): key = compute_key(function,args,kw) #是否已经拥有了它? if(key in cache and not is_obsolete(cache[key],duration)): print('we got a winner') return cache[key]['value'] #计算 result =function(*args,**kw) #保存结果 cache[key] ={ 'value':result, 'time':time.time() }

python 装饰器

こ雲淡風輕ζ 提交于 2019-12-06 05:28:40
装饰器的原理类似于以下函数 import time def func(): time.sleep(0.1) print('hello') def timer(f): def inner(): start=time.time() f() #被装饰的函数 end=time.time() print(end-start) return inner func=timer(func)# time(func)得到的是inner func() 来源: https://www.cnblogs.com/wind666/p/11963966.html

python面试题--初级(二)

烈酒焚心 提交于 2019-12-06 03:49:19
基础不牢,地动山摇,面试的时候经常会被问到一些平时基础的很容易被忽视的知识点,所以重在积累,多看多背深入理解,才能在某一天工作中豁然开朗恍然大悟。 面试题不仅仅为了应付面试,更是知识点的一个梳理总结归类和拔高,正所谓巧妇难为无米之炊,寒冬之下多屯粮,勤练兵,一份努力一分收获。 最重要的放前头: ☆♠☆♠☆♠ Python是如何进行内存管理的 ☆♠☆♠☆♠ 较长,先记住在理解------------------------------------------------ 一、垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值。对python语言来讲,对象的类型和内存都是在运行时确定的。这也是为什么我们称python语言为动态类型的原因(这里我们把动态类型语言可以简单的归结为对变量内存地址的分配是在运行时自动判断变量类型并对变量进行赋值)。 二、引用计数: python采用了类似windows内核对象一样的方式来对内存进行管理。每一个对象,都维护这一个对指向该对象的引用的计数。当变量被绑定在一个对象上的时候,该变量的引用计数就是1,(还有另外一些情况也会导致变量引用计数的增加),系统会自动维护这些标签,并定时扫描,当某标签的引用计数变为0的时候,该对象就会被回收。 三、内存池机制 python的内存机制成金字塔形: 第-1,

python基础-内置装饰器classmethod和staticmethod

血红的双手。 提交于 2019-12-06 02:37:00
面向对象编程之classmethod和staticmethod classmethod 和 staticmethod 都是python内置的装饰器 classmethod 的作用:给 在类内部定义的方法 装饰,将类的内部方法变为 类的绑定方法 绑定方法的特殊之处是 会将对象本省当作第一个参数传入方法中 类的绑定方法 :由类来调用,哪个类调用,就默认将哪个类当作第一个参数传入 class DB: __data = "lee is a big haha!" def __init__(self, user, pwd): self.user = user self.pwd = pwd # 查看数据方法 # 使用classmethod装饰器 让DB类直接调用check_db() @classmethod def check_db(cls, user, pwd): if user == "dawn" and pwd == "123": print("校验通过……") print(cls.__data) # 一般都是通过创建对象,通过对象.方法() 调用方法 db_obj = DB("lee", "123") db_obj.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha! # 给类中的check_db()加上classmethod

Python面试题(4)

浪子不回头ぞ 提交于 2019-12-06 00:37:25
1.Python下多线程的限制以及多进程中传递参数的方式 Python多线程有个全局解释器锁,这个锁的意思是任一时间只能有一个线程运用解释器。并发不是并行。 多进程间同享数据,能够运用multiprocession.Value和multiprocessing.Array 认真学习下multiprocessing模块 2.Python是怎样进行内存管理的 内存池的概念 3.什么是lambda函数?他有什么好处? lambda函数是一个能接纳任意多个参数并且返回单个表达式值的函数。 lambda函数不能包括指令,他们所包括的表达式不能超过一个。 不要试图想lambda函数中塞入太多东西,如果需要更复杂的东西,就定义一个一般函数。 4.怎么用Python输出一个Fibonacci数列? 基础。 5.介绍下Python中webbrowser的用法? 熟悉webbrowser模块。 6.解释下Python的and-or语法 这里需要大致知道and和or用于列表和数字之间的区别。 7.如何倒序迭代一个数组 # 通用方法 for i in range(len(l)-1, -1,-1): print(l[i]) # 内置函数reversed for i in reversed(l): print(i) 8.Python是怎样进行类型变换的 9.Python里面如何实现tuple和list的转换

Python面试题(2)

落爺英雄遲暮 提交于 2019-12-06 00:35:51
1.一行代码实现1-100的和 ? 1 2 3 print ( sum ( range ( 1 , 101 ))) #range中的参数是1<=i<101 #sum是计算参数的和    2.在函数内部改变全局变量 ? 1 2 3 4 5 6 a = 5 def foo1(): global a a = 4 foo1() print (a)    3.列出5个python标准库 time,获取时间戳,时间等。 os获取系统信息,如目录,pid。 subprocess,与linux shell交互 re,正则表达式,如match,findall,search sys,获取程序的参数,路径,退出消息等 psutil,获取系统运行状态,如cpu,mem,disk,net。 4.如何删除字典中的元素,如何更新元素的值,如何合并两个字典 ? 1 2 3 4 5 6 dictA = { 'age' : 18 , 'name' : 'jab' } del dictA[ 'age' ] #删除一个键值对 dictA[ 'name' ] = 'eric' #改变一个key的value tel = { 'tel' : '131111111' } dictA.update(tel) #将tel字典合并到dictA字典 print (dictA)    5 如何删除列表中的元素,如何将删除的元素赋值给变量

总结Python 63个内置函数

时光怂恿深爱的人放手 提交于 2019-12-05 23:03:13
Python 内置函数最全汇总: 1 abs()绝对值或复数的模 In [1]: abs(-6)Out[1]: 6 2 all()  接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False In [2]: all([1,0,3,6])Out[2]: FalseIn [3]: all([1,2,3])Out[3]: True 3 any()  接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False In [4]: any([0,0,0,[]])Out[4]: FalseIn [5]: any([0,0,1])Out[5]: True 4 ascii()  调用对象的 repr () 方法,获得该方法的返回值 In [30]: class Student(): ...: def __init__(self,id,name): ...: self.id = id ...: self.name = name ...: def __repr__(self): ...: return 'id = '+self.id +', name = '+self.nameIn [33]: print(xiaoming)id = 001, name = xiaomingIn [34]: ascii(xiaoming)Out[34]: 'id = 001,

Python函数高级

主宰稳场 提交于 2019-12-05 19:35:26
一、 闭包函数 闭包:闭是封闭(函数内部函数),包是包含(该内部函数对外部作用域而非全局作用域的变量的引用)。闭包指的是:函数内部函数对外部作用域而非全局作用域的引用。 def outter(x): x = 1 def inner(): print(x) return inner f = outter(2) f() # 1 f() # 1 f() # 1 # 查看闭包的元素 print(f.__closure__[0].cell_contents) # 1 闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得, 该函数无论在何处调用,优先使用自己外层包裹的作用域。 1、应用领域: 延迟计算(原来我们是传参,现在我们是包起来)、爬虫领域。 import requests def outter(url): def get(): response = requests.get(url) print(f"done: {url}") return get baidu = outter('https://www.baidu.com') python = outter('https://www.python.org') baidu() baidu() python() python() 二、 装饰器 装饰器指的是为被装饰器对象添加额外功能