详解python中@的用法


Posted in Python onMarch 27, 2019

python中@的用法

@是一个装饰器,针对函数,起调用传参的作用。
有修饰和被修饰的区别,‘@function'作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义)。

代码1

def funA(desA):
 print("It's funA")

def funB(desB):
 print("It's funB")

@funA
def funC():
 print("It's funC")

结果1

It's funA

分析1

@funA 修饰函数定义def funC(),将funC()赋值给funA()的形参。
执行的时候由上而下,先定义funA、funB,然后运行funA(funC())。
此时desA=funC(),然后funA()输出‘It's funA'。

代码2

def funA(desA):
 print("It's funA")

def funB(desB):
 print("It's funB")

@funB
@funA
def funC():
 print("It's funC")

结果2

It's funA
It's funB

分析2

@funB 修饰装饰器@funA,@funA 修饰函数定义def funC(),将funC()赋值给funA()的形参,再将funA(funC())赋值给funB()。
执行的时候由上而下,先定义funA、funB,然后运行funB(funA(funC()))。
此时desA=funC(),然后funA()输出‘It's funA';desB=funA(funC()),然后funB()输出‘It's funB'。

代码3

def funA(desA):
 print("It's funA")

 print('---')
 print(desA)
 desA()
 print('---')

def funB(desB):
 print("It's funB")

@funB
@funA
def funC():
 print("It's funC")

结果3

It's funA
< function funC at 0x000001A5FF763C80 >
It's funC
It's funB

分析3

同上,为了更直观地看参数传递,打印desA,其传的是funC()的地址,即desA现在为函数desA()。
执行desA()即执行funC(),desA=desA()=funC()。

代码4

def funA(desA):
 print("It's funA")

def funB(desB):
 print("It's funB")
 print('---')
 print(desB)

@funB
@funA
def funC():
 print("It's funC")

结果4

It's funA
It's funB
None

分析4

上面将funC()作为参数传给funA,那么funA(funC())怎么传给funB()呢?打印desB,发现并没有参数传递。
是否可以理解为当‘装饰器' 修饰 ‘装饰器'时,仅是调用函数。

以上所述是小编给大家介绍的python中@的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python给你的头像加上圣诞帽
Jan 04 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
python matlibplot绘制3D图形
Jul 02 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
关于python中的xpath解析定位
Mar 06 Python
基于python 取余问题(%)详解
Jun 03 Python
keras得到每层的系数方式
Jun 15 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
Python基础知识学习之类的继承
May 31 Python
详解python列表生成式和列表生成式器区别
Mar 27 #Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 #Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 #Python
python模块之subprocess模块级方法的使用
Mar 26 #Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
Mar 26 #Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 #Python
深度辨析Python的eval()与exec()的方法
Mar 26 #Python
You might like
php读取数据库信息的几种方法
2008/05/24 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
js 省地市级联选择
2010/02/07 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
JavaScript代码模拟鼠标自动点击事件示例
2020/08/07 Javascript
在Python web中实现验证码图片代码分享
2017/11/09 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python实现定时发送qq消息
2019/01/18 Python
wxPython窗体拆分布局基础组件
2019/11/19 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
医学生自我鉴定范文
2013/11/08 职场文书
岗位职责的含义
2013/11/17 职场文书
企业文化建设实施方案
2014/03/22 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
师德先进个人材料
2014/12/20 职场文书
党员检讨书范文
2014/12/27 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
高中体育课教学反思
2016/02/16 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android