python使用教程操作(详解python中@的用法)
python使用教程操作
详解python中@的用法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中@的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://blog.csdn.net/occamo/article/details/80842311
- python写的工具(python调用虹软2.0第三版的具体使用)
- 简述python2与python3的不同点(Python2与Python3的区别实例分析)
- Python实现FTP弱口令扫描器的方法示例(Python实现FTP弱口令扫描器的方法示例)
- pythonftp功能介绍(使用Python操作FTP实现上传和下载的方法)
- python ip代理池(Python 实现域名解析为ip的方法)
- pythonselenium接口自动测试(python3+selenium自动化测试框架详解)
- python弹跳小球(python GUI实现小球满屏乱跑效果)
- python如何使用multiprocess(Python multiprocessing多进程原理与应用示例)
- pythondjango工作机制(Python后台开发Django会话控制的实现)
- python中字符串常用函数或方法(Python3.5字符串常用操作实例详解)
- pythonselenium查看当前页面元素(python+selenium 定位到元素,无法点击的解决方法)
- python控制流实例(如何用C代码给Python写扩展库Cython)
- python如何编写判断正负数程序(Python实现判断一个整数是否为回文数算法示例)
- 学python可以应用到哪些方面(学习python可以干什么)
- python3web编程基础教程(python初学者,用python实现基本的学生管理系统python3代码实例)
- 闭包python讲解(详解Python循环作用域与闭包)
- 东南亚有哪个国家(东南亚有哪个国家最发达)
- 东南亚安全吗(好不好挣钱)
- 潘长江小品《照亮全家福》台词剧本完整版(潘长江小品照亮全家福台词剧本完整版)
- 一窗通办政务服务小品剧本(一窗通办政务服务小品剧本)
- 刘韬涛丁子贺小品《根治低头族》台词剧本(刘韬涛丁子贺小品根治低头族台词剧本)
- 看完《夺冠》,黄渤的演技我实在夸不起来,彭昱畅反令人惊喜(黄渤的演技我实在夸不起来)
热门推荐
- mysql获取当前日期时间(MySQL DATEDIFF函数获取两个日期的时间间隔的方法)
- 租用云服务器或者云主机价格(云主机租用注意事项有哪些?)
- docker容器的使用过程(详解docker容器的层的概念)
- EXEC和sp_executesql的区别
- element加固态(Element Plus实现Affix 固钉)
- pandas如何指定空数据类型(解决Pandas的DataFrame输出截断和省略的问题)
- mybatis 分页查询配置(mybatis-plus分页传入参数后sql where条件没有limit分页信息操作)
- sql行转列的应用(SQL查询语句行转列横向显示实例解析)
- 介绍几个Visual Studio 调试技巧
- dedecms如何写接口(dede的sql语句调用方法使用示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9