2017-02-02 14 views
3

я получаю ошибку SyntaxError: invalid syntax при попытке нового типизированного namedtuple синтаксис:Python 3.5 напечатал синтаксис NamedTuple производит SyntaxError

class Employee(NamedTuple): 
    name: str 
    id: int 

в Python 3.5.2, даже если в соответствии с the documentation он должен быть действителен с 3.5+ года. Я что-то упускаю? Я импортировал NamedTuple из typing в код.

ответ

7

Для того, чтобы узнать, какие типы полей в поля name и id, которые вы используете, требуется Python 3.6 or up. Python 3.5 не поддерживает подсказки типа переменной уровня.

Из typing.NamedTuple documentation:

Изменено в версии 3.6: Добавлена ​​поддержка PEP 526 переменной синтаксисом аннотаций.

Используйте обратной совместимости синтаксис также включен в документации:

Employee = NamedTuple('Employee', [('name', str), ('id', int)]) 

так перечисляя имена полей в (name, type) кортежей.

Если вы используете Python 3.5, вы можете переключиться на Python 3.5 version of the documentation вместо (есть селектор в верхнем левом углу, или вы можете просто заменить 3 в URL с 3.5).

+0

huh В верхней части документа говорится: «Новое в версии 3.5». EDIT, я вижу ... это за раздел. – daj

+0

@daj: да, модуль 'typing' является новым в Python 3.5. Дополнительный синтаксис для аннотирования переменных (например, используемый здесь для объявления 'name' как' str' и 'id' как' int'), требует Python 3.6. –

+0

@daj: если вы используете Python 3.5, вы можете вместо этого перейти к документации по версии: https://docs.python.org/3.5/library/typing.html#typing.NamedTuple. Обратите внимание на «3.5» в URL-адресе. –

 Смежные вопросы

  • Нет связанных вопросов^_^