Почему эта избыточная подсказка типа рассеивает предупреждение?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему эта избыточная подсказка типа рассеивает предупреждение?

Сообщение Anonymous »

Это фрагмент моего решения для Advent of Code 2024, день 6, на Python 3.12:

Код: Выделить всё

CoordType = typing.TypeVar("CoordType", bound=tuple[int | float, ...])
def coord_add(coords1:CoordType, coords2:CoordType) -> CoordType:
return tuple(map(operator.add, coords1, coords2))

def walk_around() -> tuple[bool, set[tuple[int, int]]]:
guard = guard_start

# heading north
move = (-1, 0)
# where we've stepped
visited = set()
visited.add(guard)
# transitions (guard, next) where we bonked into obstacles
bonked = set()
next = coord_add(guard, move)
while in_bounds(grid, *next):
if grid[next[0]][next[1]] == '#':
if (guard, next) in bonked:
# this is a loop!
return True, visited
bonked.add((guard, next))
# turn right
move = (move[1], -move[0])
else:
# take the step
guard = next
visited.add(guard)
next = coord_add(guard, move)
return False, visited

_, visited = walk_around()
print(len(visited))

loop_count = 0
for (r, c) in visited:
if grid[r][c] == '^':
continue
# add an obstacle
grid[r][c] = '#'
loop, _ = walk_around()
grid[r][c] = '.'
if loop:
loop_count += 1
print(loop_count)
Если я оставлю подсказку типа в walk_around(), я получу предупреждение о том, что выведенные типы r и c внизу являются Any вместо int и поэтому не подходят для индексации списка, хотя предполагаемый тип walk_around() по-прежнему точно такой же, как и в подсказке , а предполагаемый тип посещения по-прежнему set[tuple[int, int]]. Почему вывод просто сбивается при отсутствии этой подсказки, которая намекает на то, что он уже знал?
(Если это имеет значение, это в IntelliJ IDEA 2024.3 с v243 Плагин Python, эквивалентный Pycharm 2024.3.)

Подробнее здесь: https://stackoverflow.com/questions/792 ... -a-warning
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»