python #syntax-error #ros
#python #синтаксическая ошибка #ros
Вопрос:
Я пытался что-то сделать, используя функцию ‘Counter’ (из коллекции).
И я получил следующую ошибку.
File "/home/knut/catkin_ws/src/knut_ai_vehicle_2019/scripts/CameraStatus.py", line 5, in <module>
from collection import Counter
File "/home/knut/.local/lib/python2.7/site-packages/collection/__init__.py", line 1, in <module>
from .Collection import Collection
File "/home/knut/.local/lib/python2.7/site-packages/collection/Collection.py", line 22
def __init__(self, items) -> None:
^
SyntaxError: invalid syntax
Этот скрипт находится в пакете ROS, и, насколько я знаю, ROS поддерживает только python2.(Я прав?)
Итак, я использую python 2.
Я не знаю, но… Я предполагаю, что это проблема, которая возникает из-за того, что Python 2 больше не обновляется.
На самом деле, я никогда раньше не видел эту функцию со стрелкой.
Я продолжал искать, но не мог понять, почему эта стрелка вызывала проблему.
Единственное, что я сделал, это установить «коллекцию» с помощью pip и импортировать ее.
Я хочу, чтобы любой, кто столкнулся с этой ошибкой, помог мне.
Ответ №1:
Это то ->
, что называется аннотацией функции. Аннотации функций в некоторой степени связаны с тем, как в python 2.x были строки документации. Они позволяют вам присоединять метаданные к функции, и в данном конкретном случае ->
это аннотация для возвращаемого типа функции. Вы можете более подробно ознакомиться с аннотациями здесь.
Проблема, с которой вы столкнулись, связана с тем фактом, что аннотации являются функцией 3.x и, следовательно, это недопустимый синтаксис в 2.x. Что касается вашей точки зрения необходимости python 2.x для ROS, это неверно. ROS Noetic поддерживает Python3, и поскольку это новейшая стабильная версия, я бы предложил использовать этот дистрибутив.
Комментарии:
1. Привет, спасибо за ответ. Я понял вашу точку зрения. После редактирования «из счетчика импорта коллекции» в «импорт коллекций» это было решено. Проблема в том, как вы сказали. И я использую ROS melodic. Я буду иметь это в виду. Спасибо.