考虑以下代码,其中变量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 state == ...
块的顺序这样的事情可以解决这个问题,但是出于各种原因,我需要将它们保持在当前的顺序。问题是当给定这种结构时,如何使mypy
找出类型。你知道吗
为了清楚起见,如果没有其他原因,我会把这个循环分成3个独立的循环。你知道吗
这完全消除了对
state
的需要,因为现在循环的顺序决定了您所处的状态。你知道吗另一种方法是,如果您不喜欢硬编码端点,而是希望引用间隔大小:
你能不能先声明一个有利于初始化的值?就像你对C这样的静态类型语言所做的那样
相关问题 更多 >
编程相关推荐