[英]Pythonic idiom for checking the validity of a (negative) array index
我的函數將字符串分割成幾行,檢查第index行,然后返回兩個值之一。 這是一個簡化的版本:
def f(text, index):
rows = text.split('\n')
row = rows[index] # <-- IndexError thrown here.
if row_meets_some_condition:
return "Yes"
else:
return "No"
調用方有時會為index
傳遞一個負值(當他想使用基於文件結尾的索引時),這種方法可以正常工作,除非text
行太少,在這種情況下,我在row = rows[index]
會出現IndexError
row = rows[index]
行。
除了捕獲錯誤之外,是否有慣用的方法來檢查index
是否是rows
的合法索引?
在Python中捕獲IndexError
非常習慣。 如果您無法預知輸入有多少行,則可以在訪問列表之前檢查rows
的長度,也可以僅捕獲IndexError
。 那我去第二個選擇。
捕獲IndexError
是慣用的方式。 如果您覺得這很丑陋,則可以將其分解為一個單獨的功能。
def validIndex(container, index):
try:
container[index]
except IndexError:
return False
else:
return True
當然,另一種方式是使用if
語句:
if index < 0 and index < -len(rows):
# invalid index
最后一種選擇是僅使索引操作失敗並引發IndexError
,將確保索引有效(或處理錯誤)的責任放在調用者上。 如果調用方正在向您傳遞大量文本和行索引,則在傳遞無效索引的情況下獲得異常是完全合理的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.