详解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 相关文章推荐
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
计算机二级python学习教程(1) 教大家如何学习python
May 16 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
May 16 Python
python实时检测键盘输入函数的示例
Jul 17 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
Python实现转换图片背景颜色代码
Apr 30 Python
Numpy 多维数据数组的实现
Jun 18 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
Python面向对象特殊属性及方法解析
Sep 16 Python
常用的Python代码调试工具总结
Jun 23 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之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
php session 写入数据库
2016/02/13 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
javascript parseInt 大改造
2009/09/27 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
js查找节点的方法小结
2015/01/13 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
2017/01/20 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python调用C语言程序方法解析
2020/07/07 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
英文简历中的自荐信范文
2013/12/14 职场文书
自荐书4要点
2014/01/25 职场文书
教研活动总结
2014/04/28 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
医院员工辞职信范文
2015/05/12 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
学习十八大的感悟
2015/08/11 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android