湖南微网站营销,淘宝客做连接网站,flash教程网站首页,pageadmin的优势前言
本文实例讲述了Python装饰器原理与用法。分享给大家供大家参考#xff0c;具体如下#xff1a; 1、装饰器的本质是函数#xff0c;主要用来装饰其他函数#xff0c;也就是为其他函数添加附加功能
2、装饰器的原则:
(1) 装饰器不能修改被装饰的函数的源代码
(2) 装…前言
本文实例讲述了Python装饰器原理与用法。分享给大家供大家参考具体如下 1、装饰器的本质是函数主要用来装饰其他函数也就是为其他函数添加附加功能
2、装饰器的原则:
(1) 装饰器不能修改被装饰的函数的源代码
(2) 装饰器不能修改被装饰的函数的调用方式
3、实现装饰器的知识储备
(1) Python中函数即‘变量’
a、变量在Python中的存储
xTomwenxing
yx
[说明]:
当Python解释器遇到语句xTomwenxing’时它主要完成了两样工作:
1.在内存中开辟了一片空间用来存储字符串‘Tomwenxing’
2.在内存从创建了一个名为x的变量并用它指向字符串‘Tomwenxing’所占据的内存空间可以理解为房间和房间号的关系 而语句yx意为将变量x对字符串的引用赋值给变量y即在内存中创建一个变量y并使其指向变量x所指向的内存空间 b、函数在Python中的存储
def test():pass
[说明]
在Python中函数的存储和变量相似以上面的函数为例Python解释其主要做两件事
1.在内存中开辟一个内存空间用来存储函数代码的字符串本例中代码只有一句pass
2.在内存中创建一个变量test用来指向存储函数代码字符串的内存空间**相当于test‘函数体’** 因此说在Python中函数即变量
(2) 高阶函数下面两个条件满足任何一个即为高阶函数
a、把一个函数名当做实参传递给另外一个函数
[对装饰器的影响]:达到“在不修改被装饰函数源代码的情况下为其添加功能”的效果
import time
def bar():time.sleep(2)print(in the bar)
def test(func):start\_timetime.time()func()stop\_timetime.time()print(函数的运行时间为:,stop\_time-start\_time)
test(bar)运行结果 in the bar 函数的运行时间为: 2.0021145343780518 b、返回值中包含函数名
[对装饰器的影响]达到“不改变函数的调用方式“的效果
import time
def bar():time.sleep(3)print(in the bar)
def test2(func):print(新添加的功能)return func
bartest2(bar)
bar()
运行结果 新添加的功能 in the bar (3) 嵌套函数在一个函数体内用def去声明一个新的函数不是调用
def foo():print(in the foo)def bar(): #声明一个新的函数而不是调用函数print(in the bar)bar()
foo()
运行结果 in the foo in the bar 4、装饰器的语法高阶函数嵌套函数》装饰器 (下面的例子可以用pycharm的调试器调试一下看看代码的运行顺序)
import time
def timer(func):def deco(\*args,\*\*kwargs):#使用了不定参数start\_timetime.time()resfunc(\*args,\*\*kwargs) #运行函数stop\_timetime.time()print(运行时间:,stop\_time-start\_time)return res # 若无返回值则返回Nonereturn deco
timer #等价于test1timer(test1)deco,即test1()deco()
def test1():time.sleep(3)print(in the test1)
timer #等价于test2timer(test2)deco,即test2(name)deco(name)
def test2(name):time.sleep(3)print(in the test2,name)
test1()
print(-------------分界线------------------------)
test2(Tomwenxing)
运行结果 in the test1 运行时间: 3.0001718997955322 -------------分界线------------------------ in the test2 Tomwenxing 运行时间: 3.000171422958374 5、带参数的装饰器
\# -\*- coding:utf-8 -\*-
user,passwdTomwenxing,123
#如装饰器带参数一般是三层嵌套
def auth(auth\_type): #第一层的参数是装饰器的参数def outer\_wrapper(func):#第二层的参数是装饰器要装饰的目标函数def wrapper(\*args,\*\*kwargs):#第三次的参数是目标函数的参数if auth\_typelocal:username input(Username:).strip()password input(Password:).strip()if user username and passwd password:print(用户Tomwenxing已经成功登录)res func(\*args, \*\*kwargs) #运行目标函数return reselse:exit(用户名或密码有错误)elif auth\_typeldap:print(暂不支持这种登录方式)return wrapperreturn outer\_wrapper
def index():print(欢迎来到index页面)
auth(auth\_typelocal) #homewrapper()
def home(name):print(%s,欢迎来到home页面 %name)return This is home page
auth(auth\_typeldap)
def bbs():print(欢迎来到bbs页面 )
index()
print(----------------------分界线-------------------)
print(函数的返回值为:,home(wenxing))
print(----------------------分界线-------------------)
bbs()
运行结果 欢迎来到index页面 ----------------------分界线------------------- Username:Tomwenxing Password:123 用户Tomwenxing已经成功登录 wenxing,欢迎来到home页面 函数的返回值为: This is home page ----------------------分界线------------------- 暂不支持这种登录方式 关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料给那些想学习 Python 的小伙伴们一点帮助
微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 一、Python所有方向的学习路线
Python所有方向的技术点做的整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
二、Python基础学习视频
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~在这里插入图片描述
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈 因篇幅有限仅展示部分资料
三、精品Python学习书籍
当我学到一定基础有自己的理解能力的时候会去阅读一些前辈整理的书籍或者手写的笔记资料这些笔记详细记载了他们对一些技术点的理解这些理解是比较独到可以学到不一样的思路。
四、Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
五、面试资料
我们学习Python必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
六、Python兼职渠道
而且学会Python以后还可以在各大兼职平台接单赚钱各种兼职渠道兼职注意事项如何和客户沟通我都整理成文档了。 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】