Python аннотации: разница между Tuple и ()

Начиная с Python 3.6 (или 3.4? Я не помню), мы можем аннотировать функцию. Пример:

def getVersion() -> str:

Теперь, что происходит, когда функция возвращает кортеж? Мы можем сделать это:

def func() -> tuple:

Но если мы знаем, что кортеж - это кортеж из двух целых чисел? Я читаю здесь: Как аннотировать типы нескольких возвращаемых значений? что мы можем сделать это:

def func() -> Tuple[int, int]

Но для этого требуется импортировать модуль typing.

Также я попробовал это:

def func() -> (int, int):

И он не падает.

Что такое правильный путь?

7 голосов | спросил JPFrancoia 7 22017vEurope/Moscow11bEurope/MoscowTue, 07 Nov 2017 19:37:04 +0300 2017, 19:37:04

1 ответ


0

Аннотации можно использовать для всего, что вам нравится: это произвольные выражения Python (хотя в будущих выпусках Python ведутся дискуссии о том, как это сделать).

Вот почему (int, int) работает как аннотация. (1 + 3) также работает как аннотация.

Некоторые аннотации понимаются mypy и другими средствами проверки типов python как аннотации type : Tuple[Int, Int] такая аннотация.

Короче: используйте Tuple[int, int].

ответил Clément 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 01:16:03 +0300 2017, 01:16:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132