[轉載]python中的@符號的作用

來源:互聯網
上載者:User

標籤:

原文地址:python中的@符號的作用 queerfisher

 ‘@‘符號用作函數修飾符是python2.4新增加的功能,修飾符必須出現在函數定義前一行,不允許和函數定義在同一行。也就是說@A def f(): 是非法的。 只可以在模組或類定義層內對函數進行修飾,不允許修修飾一個類。一個修飾符就是一個函數,它將被修飾的函數做為參數,並返回修飾後的同名函數或其它可調用的東西。

執行個體(1):

def spamrun(fn):
    defsayspam(*args):
       print "spam,spam,spam"
    returnsayspam

@spamrun
def useful(a,b):
    printa**2+b**2
   
useful(3,4)

結果:

spam,spam,spam

 

執行個體(2):

def spamrun(fn):
       print "spam,spam,spam"

@spamrun
def useful(a,b):
    printa**2+b**2

結果:

spam,spam,spam

 

執行個體(3):

def spamrun(fn):
    defsayspam(*args):
       print "spam,spam,spam"
    returnsayspam

@spamrun
def useful(a,b):
    printa**2+b**2
   
useful(3,4)

結果:

spam,spam,spam

 

執行個體(4):

def addspam(fn):
    defnew(*args):
       print "spam,spam,spam"
       return fn(*args)
    returnnew

@addspam
def useful(a,b):
    printa**2+b**2
   
useful(4,3)

結果:

spam,spam,spam
25


追加

執行個體

def decorator(fn):
    deftest(*args):
       print "My god!"*3
       return fn(*args)
    returntest

@decorator
def other(a,b):
    printa**2+b**2

if __name__=="__main__":
   other(4,3)
   other(3,4)
   
結果:

My god!My god!My god!
25
My god!My god!My god!
25
注釋掉//print return fn(*args)

結果是:

My god!My god!My god!
My god!My god!My god!

要想使other函數能正常運行,必須加傳回值,@decorator是一個statement,會將other函數當作參數傳入來執行test方法

[轉載]python中的@符號的作用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.