开发者社区> 问答> 正文

mypy类型检查在后面的' elif '中间接声明的变量

考虑下面的代码,其中变量x在声明之前被引用。当它被声明时,它是从y间接声明的。

for i in range(10):
    if i < 3:
        state = 'earlier'
    elif i < 7:
        state = 'middle'
    else:
        state = 'later'
    # do actions based on state
    if state == 'later':
        print(x)
    elif state == 'middle':
        x = y
        print(y)
    elif state == 'earlier':
        y = 2

mypy给出如下错误的代码:

$ mypy stackoverflow.py
stackoverflow.py:10: error: Cannot determine type of 'x'

如何正确地注释这段代码,使mypy能够正确地确定x的类型? 我的问题不是如何重构代码。我知道改变if状态的顺序==…块可以修复问题,但是由于各种原因,我需要保持它们的当前顺序。问题是,给定这个结构时,如何让mypy找出类型。 问题来源StackOverflow 地址:/questions/59384066/mypy-type-checking-for-variables-that-are-indirectly-declared-in-later-elif

展开
收起
kun坤 2019-12-26 15:42:08 401 0
1 条回答
写回答
取消 提交回答
  • 你能不能先声明一个值来进行初始化?就像使用C这样的静态类型语言一样。

    2019-12-26 15:42:23
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载