Python: объявить тип нескольких переменных в одной строке - PullRequest
2 голосов
/ 05 ноября 2019

Если дубликат, пожалуйста, дайте мне знать, но я не смог найти ответ. Кроме того, этот вопрос , похоже, не решает проблему.

Я хотел бы объявить тип нескольких переменных в одной строке. Вместо

a: float
b: float
c: float

я хотел бы использовать что-то вроде

a, b, c: float

Но я получаю синтаксическую ошибку. Какой правильный синтаксис?

Ответы [ 3 ]

5 голосов
/ 05 ноября 2019

Невозможно аннотировать несколько переменных одним оператором аннотации.

Аннотированные операторы присваивания определяет аннотацию как:

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 три раза.

0 голосов
/ 05 ноября 2019

Вы должны назначить все значения для всех переменных.

E.G:-
a,b,c = 1.0,2.0,3.0
a,b,c = 1.0,1.0,1.0
0 голосов
/ 05 ноября 2019
 a,b,c: float,float,float

будет правильно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...