详解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的条件语句与运算符优先级详解
Oct 13 Python
python 基础教程之Map使用方法
Jan 17 Python
详解Python中的静态方法与类成员方法
Feb 28 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
Python解析Excle文件中的数据方法
Oct 23 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
使用python Telnet远程登录执行程序的方法
Jan 26 Python
Python全栈之列表数据类型详解
Oct 01 Python
Python多线程的退出控制实现
Aug 10 Python
Python xlwings插入Excel图片的实现方法
Feb 26 Python
python b站视频下载的五种版本
May 27 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
1 Tube Radio
2021/03/02 无线电
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
你可能不知道的JSON.stringify()详解
2017/08/17 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python os.access()用法实例
2019/02/18 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Django ORM 自定义 char 类型字段解析
2019/08/09 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python的垃圾回收机制详解
2019/08/28 Python
python实现登录与注册系统
2020/11/30 Python
python中if嵌套命令实例讲解
2021/02/25 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
个人简历自荐信
2013/12/05 职场文书
股东授权委托书范本
2014/09/13 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书