今天就跟大家聊聊有关@符号怎么在python中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
python中@的用法
@是一个装饰器,针对函数,起调用传参的作用。
有修饰和被修饰的区别,”@function& # 39;作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义)。
代码1
def funA (desA): ,打印(“变# 39;s  funA") def funB (desB): ,打印(“变# 39;s  funB") @funA def funC (): ,print(“变# 39;s  funC")
结果1
# 39;进行实质性的年代funA
引用>
分析1
@funA修饰函数定义def funC(),将funC()赋值给funA()函数的形参。
执行的时候由上而下,先定义funA, funB,然后运行funA (funC ())。
此时desA=funC(),然后funA()输出的这批# 39;s funA& # 39;。
代码2
def funA (desA): ,打印(“变# 39;s  funA") def funB (desB): ,打印(“变# 39;s  funB") @funB @funA def funC (): ,print(“变# 39;s  funC")结果2
# 39;进行实质性的年代funA
引用>
# 39;进行实质性的年代funB
分析2
@funB修饰装饰器@funA, @funA修饰函数定义def funC(),将funC()赋值给funA()函数的形参,再将funA (funC())赋值给funB ()。
执行的时候由上而下,先定义funA, funB,然后运行funB (funA (funC ()))。
此时desA=funC(),然后funA()输出“这# 39;s funA& # 39;; desB=funA (funC()),然后funB()输出的这批# 39;s funB& # 39;。
代码3
def funA (desA): ,打印(“变# 39;s  funA") ,打印(& # 39;——& # 39;) ,打印(desA) ,desA () ,打印(& # 39;——& # 39;) def funB (desB): ,打印(“变# 39;s  funB") @funB @funA def funC (): ,print(“变# 39;s  funC")结果3
# 39;进行实质性的年代funA
引用>
& lt;函数funC (0 x000001a5ff763c80祝辞
# 39;进行实质性的年代funC
# 39;进行实质性的年代funB分析3
同上,为了更直观地看参数传递,打印desA,其传的是函数()的地址,即desA现在为函数desA ()。
执行desA()即执行funC (), desA=desA ()=funC ()。代码4
def funA (desA): ,打印(“变# 39;s  funA") def funB (desB): ,打印(“变# 39;s  funB") ,打印(& # 39;——& # 39;) ,打印(desB) @funB @funA def funC (): ,print(“变# 39;s  funC")结果4
# 39;进行实质性的年代funA
引用>没有
# 39;进行实质性的年代funB
分析4
上面将funC()作为参数传给funA,那么funA (funC())怎么传给funB()呢?打印desB,发现并没有参数传递。
是否可以理解为当的装饰器& # 39;修饰的装饰器& # 39;时,仅是调用函数。
看完上述内容,你们对@符号怎么在python中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
@符号怎么在python中使用