修飾符在python函式中的用法詳細解釋

2021-08-06 06:57:02 字數 1592 閱讀 3546

python修飾符是實現乙個函式巢狀的功能,比較以下兩個函式

# -*- coding:utf-8 -*-

def a(fn):

print 'a'

def d(st):

print "--------------------------------"

print st + 'd'#st在這個函式中的生命週期已經結束

return fn

def b(fn):

print 'b'

return fn

@a@b

def c(st):

print "********************************"

print st#這裡是執行b、a,同時定義c

#下面是連續執行c函式三次,無視修飾符。

print "test"

c('c')

輸出結果是:ba

test

********************************

c

# -*- coding:utf-8 -*-

def a(fn):

print 'a'

def d(st):

print "--------------------------------"

print st + 'd'#st在這個函式中的生命週期已經結束

return d

def b(fn):

print 'b'

return fn

@a@b

def c(st):

print "********************************"

print st#這裡是執行b、a,同時定義c

#下面是連續執行c函式三次,無視修飾符。

print "test"

c('c')

輸出結果是:ba

test

--------------------------------

cd以上執行結果的區別是因為返回的函式不一樣,返回的函式不一樣也就是說執行的函式不一樣,所以最終結果也會不一樣。

注意幾個規律:

返回乙個函式就是在執行函式

@後面的呼叫@下面的

把函式作為引數傳遞時,整個函式可以用換元的思想去看待,就很簡單了

另外注意:

儘管只有一次c('c')

但是在呼叫之前,b函式和a函式已經被先後執行,也就是說修飾符所在的函式c,兩個修飾符就有執行b函式和a函式的效果。

輸出「test」作為乙個醒目的標記。

最後在呼叫c('c')時,輸出結果到底是否是c函式的輸出結果,取決於修飾符@a最後是否會返回c函式,

如果@a最後返回c函式,那麼輸出結果就是c函式的輸出結果,

如果@a最後不返回c函式,而是返回d函式,那麼儘管呼叫了c函式,由於修飾符的存在,輸出結果卻是d函式的輸出結果。

也就是說,對於存在修飾符的函式c,對c呼叫的結果,取決於修飾符最終是否會返回該函式,如果返回c函式,則執行c,(上面第乙份**)

如果不返回c,返回d,則遮蔽c,執行d(上面第二份**)

Python中的函式修飾符

首先,什麼是函式修飾符?函式修飾符就是對原有函式做一層包裝。比如有以下兩個函式 複製 def func1 print i am function func1 def func2 print i am function func2 現在我們想為這兩個函式增加一段共同的操作,這時就可以使用函式修飾符。首...

python中的函式修飾符

首先,什麼是函式修飾符?函式修飾符就是對原有函式做一層包裝。比如有以下兩個函式 def func1 print i am function func1 def func2 print i am function func2 現在我們想為這兩個函式增加一段共同的操作,這時就可以使用函式修飾符。首先我們...

python中的函式修飾符

首先,什麼是函式修飾符?函式修飾符就是對原有函式做一層包裝。比如有以下兩個函式 def func1 print i am function func1 def func2 print i am function func2 現在我們想為這兩個函式增加一段共同的操作,這時就可以使用函式修飾符。首先我們...