В Python невозможно обобщенно выводить типы переменных без фактического запуска кода и просмотра того, на что они в итоге ссылаются. И даже тогда большая часть кода Python работает со многими различными типами, поэтому на самом деле не существует истинного уникального типа переменной.
Например, встроенная функция any
перебирает свой аргумент и возвращает True
, если какой-либо из ее элементов имеет значение true. Звучит как функция из списка bool to bool? Неправильно. Все, что ему нужно - это то, что можно повторить. Это включает списки, кортежи, словари, наборы, генераторы и другие встроенные типы, не говоря уже о пользовательских классах, которые реализуют протокол итератора. Таким образом, вы даже не можете сделать вывод, что any
вызывается для чего-то, что это список. И любое значение python (я полагаю) может быть оценено как true / false в логическом контексте, поэтому содержимое последовательности даже не должно быть bools.
Большая часть кода не использует полный «динамизм» Python, и ожидается, что в каждую переменную будут помещены только значения одного типа. Таким образом, теоретически, вы можете использовать некоторые аннотации и эвристику, чтобы делать вывод типа в течение некоторого времени. Я не знаю ни одной IDE, которая пыталась это сделать, и я не верю, что это на самом деле практично.
По сути, вам нужна документация о том, как должны вызываться ваши функции / классы, и что они возвращают. Если вам не хватает этих знаний, вы будете совершать ошибки независимо от того, есть у вас информация о типе или нет.