如何将 mypy`reveal_locals()` 的输出转换为 Python 中的正确键入语法?

问题描述

给定以下脚本:

class_id=1

运行:

class

返回

<textarea
  cols={40}
  placeholder={'day 1: Temple visit,&#13;&#10;'
    + 'day 2: Jungle barbeque,\n'
    + 'day 3: Waterfall visit in the evening,\n'
    + 'day 4: Visit UnesCO World Heritage Site,\n'
    + 'day 5: Art gallery show,\n'
    + 'day 6: Visit grand swimming pool,\n'
    + 'day 7: Visit to Blue fort'}
  rows={20}
/>

我想知道如果我想要一些,我应该如何为这种类型添加注释:

# check.py
a = [
    ('a',),('b1','b2'),('x',]

reveal_locals()

其中 mypy check.py 是具有 1 个或多个字符串的元组列表。

解决方法

当您处理未知大小的元组时,类型检查器需要类似 Tuple[<type>,...] 的语法,而当元组中的元素数量已知示例 response: typing.Tuple[int str] = (200,'OK'] 时,语法很简单。

>

在您的情况下,元组中的项目数不同,Tuple[str,...] 应该可以工作。

import typing

def f(a : typing.List[typing.Tuple[str,...]]) -> None: 
    print(a)

f(a = [ ('a',),('b1','b2'),('x',) ] )