Недавно я заметил что-то интересное, глядя на Специфика грамматики Python 3.3:
funcdef: 'def' NAME parameters ['->' test] ':' suite
Дополнительный блок "стрелка" отсутствовал в Python 2, и я не мог найти никакой информации о его значении в Python 3. Оказывается, это правильный Python, и он принят интерпретатором:
def f(x) -> 123:
return x
Я думал, что это может быть какой-то синтаксис предусловия, но:
- Я не могу проверить
x
здесь, на нем все еще undefined, - Независимо от того, что я помещаю после стрелки (например,
2 < 1
), это не влияет на поведение функции.
Может ли кто-нибудь, привыкший к этому синтаксису, объяснить это?