@符号怎么在python中使用

  介绍

今天就跟大家聊聊有关@符号怎么在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中使用