【Python基礎】Python修飾符@Decorator:全網最簡單搞懂修飾符的一篇文章 別再問我為什麼出現@了!

一、前言

常常看到別人的程式碼Code裡出現@嗎?

網路上看了很多Python修飾符文章還是覺得很難嗎?

這篇文章就是為你而生!五分鐘看完就可以讓code更簡單!

 

 

二、什麼是@什麼是修飾符Decorator

在Python裡面看到@或稱修飾符或Decorator都是同一種東西,而它的功用就是讓程式更簡便!修飾符有下面幾個特色:

1.修飾符是一個方法(函數),也就是說是我們def出來的東西,只是參數為一個方法

2.修飾符的主要功能是修飾其他方法,進而讓程式更好寫

3.修飾符的使用:會在其他def上看到@

4.修飾符會先被執行(記住這一句話看完範例就明白了)

 

 

三、Python修飾符(Decorator)簡單範例

(1) 簡單範例1-修飾符的運作

讓我們看第一個範例,首先我們宣告一個good方法,而後其作用是先print good後去執行func這個參數,我們把而後定義一個test方法,並且用good去修飾它。

其運作結果為先去執行good方法,而後依照順序先print good後再去執行func,此時你我都知道func這時就代表test,test就是print出nash。

簡單來說就是被修飾的方法會被當成修飾符方法的參數

# 簡單範例1
def good(func):
    print('good')
    func() # 呼叫被修飾的方法


@good
def test():
    print('nash')



image

 

(2)簡單範例2-被修飾的方法中帶有參數

這個範例可以看到test帶有name參數,此時的@方法該怎麼寫?很簡單多一層def就好,也就是說先執行了good而後回傳了inner,inner帶有的參數x就是被修飾函數的參數。

所以在good中可以看到回傳inner的時候去執行被修飾函數func(此時是test),而其帶有參數x(此時為test中的name參數)。

# 簡單範例2
def good(func):
    def inner(x): # 在修飾符方法中多一層def接收被修飾方法的參數
        func(x) # 運作被修飾方法
    return inner # 執行inner


@good
def test(name):
    print(name)


test('nash')

image

 

 

四、修飾符簡單應用

【Python基礎】Python修飾符計時器:每個def都給他無痛@快來計時來一下吧!

 

arrow
arrow
    創作者介紹
    創作者 恩哥Python 的頭像
    恩哥Python

    恩哥Python量化教室-零基礎也能學會Python

    恩哥Python 發表在 痞客邦 留言(0) 人氣()