python 根據不同引數呼叫不同的函式

2021-09-29 00:01:16 字數 1435 閱讀 4992

有時候需要根據不同的情況呼叫不同的方法實現功能邏輯,有什麼優雅的方式可以實現麼?

首先有乙個最原始的if ... else方式

parm =

'a'defa(

):print

("a"

)defb(

):print

("b"

)if parm ==

'a':

a()elif parm ==

'b':

b()

這樣的方式可以實現功能邏輯,但是略顯low,而且後續的擴充套件不大好

那是否有更好的方式呢?

func_dict.get(x, func_none)()中方法是從字典中取出值對應的函式物件,然後後面加上()是執行該物件的__call__方法。因為python中函式就是實現了__call__方法的物件

def

funca()

:pass

deffuncb()

:pass

deffunc_none()

:print

"cannot find func"

func_dict =

deffunc

(x):

return func_dict.get(x, func_none)

()

exec內建函式是繼eval之後的乙個很有用的函式,可以執行python的**,傳入python的**字串就行

parm =

'a'def

a(m)

:print

("a+"

, m)

defb

(m):

print

("b+"

, m)

eval(""

.format

('a'))

('xx'

)

用於返回乙個物件屬性值

語法:getattr(object, name[, default])

引數:object – 物件。

name – 字串,物件屬性。

default – 預設返回值,如果不提供該引數,在沒有對應屬性時,將觸發 attributeerror

返回值:

返回物件屬性值

parm =

'a'classc(

object):

defa

(self,m)

:print

("a+"

,m)def

b(self,m)

:print

("b+"

,m)getattr

(c()

, parm)

('p'

)

推薦使用

python 根據不同引數呼叫不同的函式

有時候需要根據不同的情況呼叫不同的方法實現功能邏輯,有什麼優雅的方式可以實現麼?首先有乙個最原始的if else方式 parm a defa print a defb print b if parm a a elif parm b b 這樣的方式可以實現功能邏輯,但是略顯low,而且後續的擴充套件不...

根據解析度不同呼叫不同的css檔案

解 釋 var ie1024 var ie800 var ie1152 var ieother 引號裡面分別填寫,使用者使用ie的時候並且解析度為1024 768,800 600,1152 864要使用的css檔名。var firefox1024 var firefox800 var firefox...

根據解析度不同呼叫不同的css檔案

摘錄於 解 釋 var ie1024 var ie800 var ie1152 var ieother 引號裡面分別填寫,使用者使用ie的時候並且解析度為1024 768,800 600,1152 864要使用的css檔名。var firefox1024 var firefox800 var fir...