gpt4 book ai didi

python - 在可以返回不同类型参数的函数中使用类型提示是否有意义?

转载 作者:行者123 更新时间:2023-12-01 07:50:14 24 4
gpt4 key购买 nike

我想检查字符串是否包含与正则表达式 _\d{2}. 匹配的子字符串(即 _,两个数字,然后 . ),如果是,则返回数字部分。以下代码执行此操作:

def extract_digits(string: str) -> int:
match = re.search(r'_\d{2}\.', string)
if match is not None:
digits = match.group(0)[1:3]
n = int(digits)
else:
n = None
return n

因为可以通过在这些字符串上测试来验证它:

wrong = "resnet50_coco_best_v2.1.0.h5"
right = "resnet50_csv_24.h5"

但是,我想知道对输出使用类型提示是否有意义,因为它可以是 NoneTypeint。请注意,下游代码优雅地处理 None 返回值,因此我怀疑这个函数是否会使我的代码崩溃。我唯一的困惑是,linter 或解释器似乎都不关心返回参数可能具有或不具有 int 类型这一事实。

我认为这与类型提示的想法是一致的(它们是给开发人员的提示,而不是给解释器的指令)。但是,我使用类型提示然后忽略它们是不是很Pythonic?

最佳答案

如果您想使用该函数的提示,您应该使用 typing.Optional :

from typing import Optional

def extract_digits(string: str) -> Optional[int]:
match = re.search(r'_\d{2}\.', string)
if match is not None:
digits = match.group(0)[1:3]
n = int(digits)
else:
n = None
return n

关于python - 在可以返回不同类型参数的函数中使用类型提示是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com