我有一個接受整數年的函數,但我也希望用戶能夠傳遞字符串'ALL'
,並且仍然能夠返回。如何簡化相互依賴但導致相同結果的兩個條件?
我有這個醜陋的代碼現在:
if type(year) != str or (type(year) == str and year.upper() != 'ALL'):
total_results = self.filterResultsByYear(total_results, year, year2)
結果默認情況下,過濾,本年度,並且可以通過其他年份進行過濾,但如果用戶想不過濾,他們有今年通過'全部'。
我寫上述憎惡的原因是,如果我只有if year.upper() != 'ALL'
如果我傳遞一個整數,則得到一個TypeError
。如果我把if type(year) != str and year.upper() != 'ALL'
我仍然得到相同的錯誤。上面的代碼看起來非常難看,我想讓它變得更加pythonic。我必須做什麼工具?
「year」是一個字符串但不是「all」時的預期行爲是什麼? – DyZ
你總是期望有效的輸入?如果不是,我會說只是檢查是否是有效年份或根本不應用過濾器。 – KGS
@DYZ我想拋出錯誤/提醒用戶輸入無效。基本上我想過濾器默認應用,如果用戶提供一個int,但如果用戶提供了一個字符串,並且該字符串恰好是「all」,那麼我想忽略該過濾器。 – PolarBearITS