python装饰器

Python学习Day13

三世轮回 提交于 2019-11-27 03:11:54
闭包函数 定义: 1.出现函数的嵌套定义。 2.嵌套函数引用了外层函数第一的变量。 3.外层函数返回嵌套函数。 什么是闭包函数: 所谓的闭包函数,其实采用了函数的嵌套的语法实现。通过外层传入的参数内层调用处理,然后外层返回内层函数 闭包函数语法: def outter(func): #双层的模板 def inner(*args,**kwargs): #加功能 res=func(*args,**kwargs) return res return inner 闭包函数所需要满足一定的条件 1.必须使用嵌套函数 2.内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量—内部函数引用外部变量 3.外部函数必须返回内嵌函数—必须返回那个内部函数 闭包函数的作用: 可以用来作为一个函数的装饰器 装饰器 定义: 装饰器,顾名思义,就是装饰,修饰别的对象的一种工具。 所以装饰器可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象 作用: 在不修改被装饰对象的源代码以及调用方式的前提下为被装饰对象添加新功能 举例 import time def index(): print('hello index') time.sleep(1) # 检测index的运行的时间,但是不能改变index的调用方式,以及index的源码 # 写一个装饰器 def deco(func): # func =

python基础之面试常问

匆匆过客 提交于 2019-11-27 02:41:09
目录 python相对其他语言有什么特点? python内存管理机制,gc机制的了解,gc回收三种算法。 lambda函数 高级函数 map、reduce、filter、sorted等。 简述python中list、tuple以及dict。 python中深拷贝与浅拷贝。 python中is和==的区别。 python中if __ name ==' main __'有什么含义? python命令和python -m命令在执行脚本时的区别? python中多进程、多线程、携程。 python中迭代器、生成器与装饰器。 python中单引号、双引号、三引号的应用场景与区别。 python如何体现面对对象的三大特性。 python中异常管理的机制。 python函数闭包。 python面试常问 python相对其他语言有什么特点? python内存管理机制,gc机制的了解,gc回收三种算法。 python内存管理( 原博文——python内存管理 ) python是动态语言,对象与引用分类,一个变量使用不需要事先声明,而在赋值时,变量可以重新赋值为任意值。 python中,整数和短小的字符,Python都会缓存这些对象,以便重复使用。当我们创建多个等于1的引用时,实际上是让所有这些引用指向同一个对象。(可以通过is判断是不是同一个对象) 在python中

Python基础知识:函数

*爱你&永不变心* 提交于 2019-11-27 01:11:09
1、定义函数和调用函数 #定义函数def def greet_user(username): '''简单的问候语''' print('Hello,%s!'%username) greet_user('jack')#调用函数 2、形参和实参,实参的顺序很重要 def describe_flower(flower_type,flower_color='yellow'): print("My favorite flower is %s."%flower_type) print("My favorite %s is %s."%(flower_type,flower_color)) describe_flower('rose','red') describe_flower(flower_type='lily',flower_color='white') describe_flower(flower_type='babysbreath')#没有提供实参的形参将调用默认值 print('----------') 3、定义一个返回字典的函数 #返回字典 def make_album(singer_name,album_name,num_of_songs=''): info_of_album={'singer':singer_name,'album':album_name} if num_of

python第十三课

不羁的心 提交于 2019-11-26 23:55:15
#函数 --2天 #函数的定义和调用 #def 函数名(形参) #函数体 #return返回值 #调用 函数名(实参) #站在形参的角度上:位置参数,*args,默认参数(陷阱),**kwargs #站在实参的角度上:按位置传,按照关键字传 #返回值:没有返回值 返回一个值 返回多个值 #接收返回值:没有返回值不接收,返回一个值作一个变量接收,返回多个值用一个变量或者对应数目变量接收#闭包函数 --在内部函数引用外部函数的变量#装饰器函数 --装饰器一定是闭包函数 #装饰器的作用 --在不改变原来函数的调用方式的情况下,在这个函数前后添加新的功能 #完美的符合了一个开发原则:开放封闭原则 #对扩展是开发的 #对修改是封闭的 #基础的装饰器 # from functools import wraps # def wrapper(func): # @wraps(func) # def inner(*args,**kwargs): # '''在函数被调用之前添加的代码''' # ret=func(*args,**kwargs) #func是被装饰的函数,在这里被调用 # return ret # return inner # 使用---@wrapper # def func(): #inner # pass #func name # 带参数的装饰器 def outer(形参): def

python--装饰器进阶

寵の児 提交于 2019-11-26 20:29:02
一、 带参数的装饰器 # import time # FLAGE = False # def timmer_out(flag): # def timmer(func): # def inner(*args,**kwargs): # if flag: # start = time.time() # ret = func(*args,**kwargs) # end = time.time() # print(end-start) # return ret # else: # ret = func(*args, **kwargs) # return ret # return inner # return timmer # # timmer = timmer_out(FLAGE) # @timmer_out(FLAGE) #wahaha = timmer(wahaha) # def wahaha(): # time.sleep(0.1) # print('wahahahahahaha') # # @timmer_out(FLAGE) # def erguotou(): # time.sleep(0.1) # print('erguotoutoutou') # wahaha() # erguotou() 二、 多个装饰器装饰一个函数 def wrapper1(func): def

python装饰器

拈花ヽ惹草 提交于 2019-11-26 20:09:05
装饰器 装饰函数,扩展功能 装饰器作用 1.不修改函数的调用方式 2.给原来的函数添加新的功能 开发封闭原则 1.开发:对扩展开发 2.封闭:对修改封闭 示例 例1:计算代码运行时间 import time def func(): start_time = time.time() print('from the func') time.sleep(1) end_time = time.time() print(end_time - start_time) func() # 执行结果 from the func 1.0009381771087646 例2:计算函数运行时间 def timmer(f): start_time = time.time() f() end_time = time.time() print(end_time-start_time) def func(): print('from the func') time.sleep(1) func() timmer(func) # 传入函数名就得到该函数的执行时间 语法糖 import time def timmer(func): def inner(): start_time = time.time() func() end_time = time.time() print(end_time-start_time)

转载:唐磊的个人博客《python中decorator详解》【转注:深入浅出清晰明了】

空扰寡人 提交于 2019-11-26 19:25:56
转载请注明来源: 唐磊的个人博客《python中decorator详解》 前面写python的AOP解决方案时提到了decorator,这篇文章就详细的来整理下python的装饰器——decorator。 python中的函数即objects 一步一步来,先了解下python中的函数。 def shout(word='hello,world'): return word.capitalize() + '!'print shout()#输出:Hello,world!#跟其他对象一样,你同样可以将函数对象赋值给其他变量scream = shout#注意,shout后面没有用括号(),用括号就是调用了shout方法,这里仅仅是将shout的函数对象复制给scream。#意味着,你可以通过scream调用shout方法。print scream()#同样输出:Hello,world!#此外,你将代表函数变量的shout删除,shout现在失效,但scream同样可以调用del shoutprint shout()#会抛异常#Traceback (most recent call last):# File "S:\decorator.py", line 18, in # print shout()#NameError: name 'shout' is not defined#

python数据分析师面试题选

痞子三分冷 提交于 2019-11-26 17:23:28
python数据分析部分 1. 如何利用SciKit包训练一个简单的线性回归模型 利用linear_model.LinearRegression()函数 # Create linear regression object regr = linear_model.LinearRegression() # Train the model using the training sets regr.fit(data_X_train, data_y_train) 2. 例举几个常用的python分析数据包及其作用 数据处理和分析:NumPy, SciPy, Pandas 机器学习:SciKit 可视化: Matplotlib, Seaborn 3. 如何利用Numpy对数列的前n项进行排序 使用 argsort() 函数: x[x [: n-1].argsort ()] 4. 如何检验一个数据集或者时间序列是随机分布的 画lag plot(Correlogram:相关图),如果图上的点呈散乱分布,则为随机 5. 在python中如何创建包含不同类型数据的dataframe 利用pandas包的DataFrame函数的serias创建列然后用dtype定义类型: df = pd.DataFrame({'x': pd.Series(['1.0', '2.0', '3.0'], dtype

浅谈 Flask 框架

北城余情 提交于 2019-11-26 17:23:06
一、python基础 python常见的内置函数 python的数据类型 python常见的内置模块 python面向对象的三大特性 python三器——装饰器/迭代器/生成器 python的异常处理 简述Python2与Python3的区别 我变了,你变不变? 对不起,您输入的内容不合法 二、网络/并发编程 tcp / udp 协议及其实现的socket 三、数据库 mysql的基本操作 四、前端 html的常用标签 JavaScript常用对象 AJAX小示例 五、Web框架 浅谈 Web框架 浅谈 HTTP 协议 5.1 Django Django基本知识 Django模板系统:Template Django的视图系统:View Django的路由系统:URL ORM:对象关系映射 浅谈cookie 和 session 5.2 Flask 浅谈 Flask 框架 来源: https://www.cnblogs.com/zengyi1995/p/11329014.html

Python 迭代器,生成器

落爺英雄遲暮 提交于 2019-11-26 12:06:08
一 、复习# 函数 # 函数的定义和调用 # def 函数名(形参): # 函数体 # return 返回值 # 站在形参的角度上:位置参数,*args,默认参数(陷阱),**kwargs # 站在寮参的角度上:按照位置传,按照关键字传 # 返回值:没有返回值 返回一个值 返回多个值 # 接收返回值:没有返回值不接收,返回一个值用一个变量接收,返回多值用一个变量或者对应数目的变量接收# 闭包函数 -----在内部函数引用外部函数的变量# 装饰器 ----》装饰器一定是闭包函数# 装饰器作用:在不改变原来函数的调用方式的情况下,在这个函数前后添加新的功能 #完美的符合了一个开发原则:开放封闭原则 # 对扩展是开放的 # 对修改是封闭的 # 基础的装饰器 # from functools import wraps # def wrapper(func): # @warps(func) # def inner(*args,**kwargs): # '''在函数被调用之前添加的代码''' # ret = func(*args,**kwargs) #func 是被装饰的函数 在这里被调用 # '''在函数被调用之后添加的代码''' # return ret # return inner #使用------- @wrapper # 完美的装饰器 # from functools import