![](/img/trans.png)
[英]Pythonic way to write REST wrapper function that takes optional arguments
[英]Mypy - creating a wrapper for function with optional arguments
使用 Mypy,除了調用所有變體並省略每個可選參數之外,還有一種實用的方法如何為帶有可選 arguments 的 function 編寫包裝器?
這是一個示例,我需要在兩個變體中調用該方法 - 使用和不使用stopindex
參數:
def index_noex(sequence: typing.Sequence, item: typing.Any,
startindex: int = 0, stopindex: typing.Optional[int] = None
) -> int:
try:
if stopindex is None:
index = sequence.index(item, startindex)
else:
index = sequence.index(item, startindex, stopindex)
except ValueError:
index = -1
return index
Sequence
類型需要 int 作為開始和停止索引的原因是某些序列(如list
或tuple
)的index
實現明確禁止將開始或結束索引傳遞為None
。
鑒於缺少起始索引的語義是搜索從 0 開始,您可以在調用它時指定它,就像您現在正在做的那樣。
缺少結束索引意味着搜索將到達序列的末尾。 並且鑒於搜索將查找stopindex
之前的所有元素,您需要將序列的長度作為默認值傳遞。
因此,以下代碼將起作用:
import typing
def index_noex(sequence: Sequence, item: Any,
startindex: int = 0, stopindex: Optional[int] = None) -> int:
try:
if stopindex is None:
stopindex = len(sequence)
index = sequence.index(item, startindex, stopindex)
except ValueError:
index = -1
return index
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.