【发布时间】:2023-03-10 20:09:01
【问题描述】:
我有以下函数,它给定一个'a-02/b-03/foobarbaz_c-04' 形式的字符串,将提取 a、b 和 c。问题是,对于我的用例,输入字符串可能不包含 c,这样就没有要提取的数字了。
代码如下:
from typing import Tuple, Optional
def regex_a_b_c(name: str) -> Tuple[int, int, Optional[int]]:
a_b_info = re.search('a-(\d\d)/b-(\d\d)/', name)
a, b = [int(a_b_info.group(x)) for x in range(1, 3)]
c_info = re.search('c-(\d\d)', name)
if c_info:
c = int(c_info.group(1))
else:
c = None
return a, b, c
我遇到的问题是,尽管我试图明确最后一个返回参数是 Optional[int],但我无法让我的 linter 停止抱怨变量 c。
我在c = None 行收到一条警告,上面写着:
赋值中不兼容的类型(表达式的类型为无,变量 具有 int 类型)
我该如何解决这个问题?
【问题讨论】:
标签: python type-hinting mypy