python def 参数一直为false_在Python 3中,如果参数为False,则查找惯用的方法来评估为False...
我有一連串的功能,全部定義在課程其他地方:
fus(roh(dah(inp)))
其中inp是字典或bool(False).
期望的結(jié)果是,如果inp或任何函數(shù)評估為False,則False由函數(shù)堆返回.
我試圖使用三元運(yùn)算符,但是它們不能正確評估.
def func(inp):
return int(inp['value']) + 1 if inp else False
拋出一個TypeError,bool不可下標(biāo),如果i == False,因為inp [‘value’]在條件之前被求值.
我知道我可以明確地做:
def func(inp):
if inp == False:
return False
else:
return inp['value'] + 1
但是有很多功能,這幾乎是我代碼長度的四倍.它也一次又一次地重寫完全相同的代碼行,這對我來說這是做錯事的方式.
我懷疑有參數(shù)的裝飾者是答案,但是我玩的越多,我就越不肯定.
def validate_inp(inp):
def decorator(func):
def wrapper(*args):
return func(inp) if inp else False
return wrapper
return decorator
@validate_inp(inp)
def func(inp):
return int(inp['value']) + 1
不幸的是,裝飾器調(diào)用引發(fā)了一個NameError,’inp’沒有定義.但我不知道我是否正在使用裝飾器,或者裝飾器是錯誤的解決方案.
尋找評論,批評,建議和/或健康檢查.
如果你發(fā)現(xiàn)這個試圖解決你自己的問題?
你可能想要使用空字典而不是布爾值False.道具到@chepner.
在我的應(yīng)用程序中,使用False是“好的”,沒有提供任何優(yōu)勢,并導(dǎo)致一些塊狀的代碼塊.
我發(fā)現(xiàn)一切都比較簡單,使用一個空字典.我正在使用帶有裝飾器的函數(shù),通過引用dict [‘value’],其中dict為空,捕獲引發(fā)的KeyError.
總結(jié)
以上是生活随笔為你收集整理的python def 参数一直为false_在Python 3中,如果参数为False,则查找惯用的方法来评估为False...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ISO14000标准与ISO9000标准
- 下一篇: python数据动画_[转载]Maya使