社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用异常处理的Python类型

user7147804 • 5 年前 • 1183 次点击  

以下代码存储在名为 示例.py .

import re
from typing import Optional, Tuple
 
def func(path: str) -> Optional[Tuple[str, str]]:
    regex = re.compile(r"/'([^/']+?)'/'([^/']+?)'")
    try:
        return regex.match(path).groups()
    except AttributeError:
        return None

mypython linter在分析代码时抛出以下错误:

sample.py:8: error: Incompatible return value type (got "Union[Sequence[str], Any]", expected "Optional[Tuple[str, str]]")
sample.py:8: error: Item "None" of "Optional[Match[str]]" has no attribute "groups"

regex.match(path).groups() 可以返回 None 类型,它没有 groups 属性,将处理结果异常并在返回类型中指定处理。但是,Mypy似乎不理解异常正在被处理。据我所知 Optional[Tuple[str, str]] 是正确的返回类型,而Mypy坚持认为 Union[Sequence[str], Any] 是正确的。对Python类型使用异常处理的正确方法是什么?(请注意,我并没有要求在不使用异常处理的情况下使用其他方法来编写代码。我只是想提供一个简单而完整的示例,其中Python类型的checker的行为与异常处理的预期不同。)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52478
 
1183 次点击  
文章 [ 1 ]  |  最新文章 5 年前