Невозможно аннотировать несколько переменных одним оператором аннотации.
Аннотированные операторы присваивания определяет аннотацию как:
annotated_assignment_stmt ::= augtarget ":" expression
["=" (starred_expression | yield_expression)]
ТакПравило augtarget
определяет, что разрешено использовать перед двоеточием. augtarget
определяется как:
augtarget ::= identifier | attributeref | subscription | slicing
Таким образом, единственное, что может идти перед двоеточием, это идентификатор (т. Е. Одна переменная), attributeref (выражение, за которым следует .some_attribute_name
), подписка(выражение, за которым следует [some_index]
) или разделение (тот же синтаксис, что и для подписки). a, b, c
не является ни одной из этих вещей, поэтому a, b, c: <some type>
не является допустимым синтаксисом.
Если вы просто хотите аннотировать все три переменные в одной строке, а не обязательно в одном выражении, вы можетенезависимые от цепочки простые выражения вместе с точкой с запятой:
a:float; b:float; c:float
... Но это несколько неудовлетворительно, так как вам все равно придется вводить float
три раза.