详解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入门教程
Feb 08 Python
PYTHON正则表达式 re模块使用说明
May 19 Python
python二叉树的实现实例
Nov 21 Python
python中List的sort方法指南
Sep 01 Python
Python中非常实用的一些功能和函数分享
Feb 14 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
Django中的用户身份验证示例详解
Aug 07 Python
利用Python制作动态排名图的实现代码
Apr 09 Python
解决redis与Python交互取出来的是bytes类型的问题
Jul 16 Python
python 多态 协议 鸭子类型详解
Nov 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP图片加水印实现方法
2016/05/06 PHP
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
综合办公室主任职责
2013/12/16 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
班委竞选演讲稿
2014/04/28 职场文书
小学假期安全广播稿
2014/09/28 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
单位综合评价意见
2015/06/05 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS
React自定义hook的方法
2022/06/25 Javascript