繁体   English   中英

“with”语句是否支持类型提示?

[英]Does a "with" statement support type hinting?

您可以为使用with语法定义的变量定义类型提示吗?

with example() as x:
    print(x)

我想在上面输入提示,说x是一个str (作为一个例子)。

我发现的唯一解决方法是使用中间变量,但这感觉很糟糕。

with example() as x:
    y: str = x
    print(y)

我在打字文档中找不到示例。

PEP 526 已在 Python 3.6 中实现,允许您注释变量。 例如,您可以使用

x: str
with example() as x:
    [...]

或者

with example() as x:
    x: str
    [...]

通常类型注释放置在 API 边界处。 在这种情况下,类型应该从example.__enter__推断出来。 如果该函数未声明任何类型,则解决方案是创建相应的存根文件以帮助类型检查器推断该类型。

具体来说,这意味着创建一个与导入Example的模块具有相同词干的.pyi文件。 然后可以添加以下代码:

class Example:
    def __enter__(self) -> str: ...
    def __exit__(self, exc_type, exc_value, exc_traceback) -> None: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM