有時候需要根據不同的情況呼叫不同的方法實現功能邏輯,有什麼優雅的方式可以實現麼?
首先有乙個最原始的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...