печать не работает с mypy

когда я использую метод mypy в python3, он ничего не печатает. Я использую приведенный ниже код, и в нем нет ошибок.

def p(st : str) -> bool:
    print('hello')
    return True

p("hello")
print(10)

но он не печатает «привет» или «10». в чем проблема?


person Mohammad M    schedule 15.02.2018    source источник
comment
mypy — это средство проверки статических типов, но оно не запускает ваш код за вас. Если вы называете это как-то вроде mypy my_script.py, вы можете вместо этого попробовать python my_script.py.   -  person G_M    schedule 16.02.2018
comment
но у него есть эта ошибка: File "test.py", line 1 def p(st : str) -> bool: ^ SyntaxError: invalid syntax   -  person Mohammad M    schedule 16.02.2018
comment
Похоже, вы не используете Python 3. Можешь попробовать python3 my_script.py?   -  person G_M    schedule 16.02.2018
comment
Извините. оно работает. у меня большая ошибка. нужно ли использовать mypy test.py перед использованием python3 test.py?   -  person Mohammad M    schedule 16.02.2018


Ответы (1)


Если у вас есть какой-то код Python, решите ли вы проверить его с помощью mypy, это совершенно необязательно. Если вам нужна проверка типов вашего кода, вы можете запустить mypy и получить отчет обо всех ошибках, содержащихся в вашем коде (если они есть). Если вас не волнует проверка типов вашего кода, вы можете игнорировать этот инструмент (поскольку вам не нужен отчет).

Обратите внимание, что все, что делает mypy, это дает вам отчет. Вот почему выполнение mypy test.py ничего не дает — это создание отчета, а не запуск кода.

В настоящее время ваш код свободен от ошибок типов, поэтому mypy вообще ничего не выводит — отчет пуст. Вы можете увидеть пример отчетов, которые mypy выдаст вам, пытаясь преднамеренно внести ошибку в ваш код. Например, попробуйте изменить свою функцию, чтобы она возвращала строку вместо логического значения. Это противоречит вашей подписи типа, поэтому mypy отметит это как ошибку и включит в сгенерированный отчет.

Чтобы на самом деле запустить ваш код, вам нужно будет использовать интерпретатор Python. Здесь, кажется, вы пишете код Python 3, поэтому вам нужно сначала установить и использовать интерпретатор Python 3. Как только это будет сделано, вы можете запустить свой код в командной строке, выполнив python3 test.py, если вы используете Mac или Linux, или выполнив py -3 test.py, если вы используете Windows.

Обратите внимание, что интерпретатор Python 3 полностью игнорирует аннотации вашего типа при его запуске. Аннотации являются допустимым синтаксисом Python, но в основном игнорируются самим интерпретатором Python. Аннотации существуют исключительно как способ, позволяющий вам прикреплять метаданные к определенным частям вашего кода, которые сторонние библиотеки и инструменты могут затем анализировать и использовать.

person Michael0x2a    schedule 18.02.2018