簡體   English   中英

打印不適用於mypy

[英]print doesn't work with mypy

當我在python3方法中使用mypy時,它不會打印任何內容。 我使用下面的代碼,並且沒有錯誤。

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

p("hello")
print(10)

但不會顯示“ hello”或“ 10”。 問題是什么?

如果您有一些Python代碼,是否決定使用mypy對其進行檢查完全是可選的。 如果您關心代碼的類型檢查,則可以運行mypy並獲取有關代碼包含的任何錯誤(如果有)的報告。 如果您不關心代碼的類型檢查,則可以忽略該工具(因為您不需要報告)。

請注意, mypy所做的只是向您提供報告。 這就是為什么做mypy test.py什么都不做的原因-它正在生成報告,實際上沒有運行任何代碼。

當前,您的代碼沒有類型錯誤,因此mypy實際上將什么也不會打印出來-報告為空。 您可以通過嘗試在代碼中故意引入錯誤來查看mypy將為您提供的各種報告示例。 例如,嘗試修改您的函數,使其返回字符串而不是布爾值。 這與您的類型簽名矛盾,因此mypy會將其標記為錯誤並將其包含在生成的報告中。

要實際運行代碼,您將需要使用Python解釋器。 在這里,似乎您正在編寫Python 3代碼,因此您需要首先安裝並使用Python 3解釋器。 完成后,如果使用的是Mac或Linux,則可以通過執行python3 test.py在命令行上運行代碼python3 test.py如果使用的是Windows,則可以執行py -3 test.py在命令行上運行代碼。

請注意,Python 3解釋器在運行它時會完全忽略您的類型注釋。 注釋是有效的Python語法,但Python解釋器本身基本上將其忽略。 注釋的存在純粹是一種讓您將元數據附加到代碼的某些部分的方式,第三者庫和工具隨后可以對其進行分析和使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM