在 Python 中,註解(comments) 是用來解釋程式碼、標註作者的想法,或者提供對程式邏輯的簡要說明。註解不會被 Python 解釋器執行,它們僅供開發者閱讀,使程式碼更加可讀、易於維護。
單行註解使用井號(#)開頭,Python 會忽略這行從井號開始後的所有內容。
範例:
# 這是一個單行註解,Python 會忽略這行
print("Hello, world!") # 這裡也可以加註解
Python 沒有專門的多行註解符號,但可以用多個單行註解來達到多行註解的效果。
範例:
# 這是多行註解的第一行
# 這是多行註解的第二行
# 這是多行註解的第三行
使用多行字串(''' 或 """)作為區塊註解。雖然這些通常是用來處理字串,但也能作為不會影響程式執行的區塊註解使用。這樣的註解不會顯示或執行,常用於文件字符串(docstring)說明整個程式的目的或某個函數的功能。
範例:
'''
這是一個多行註解區塊
通常用於解釋程式的邏輯或流程
也可以用作函數的文件字符串
'''
print("區塊註解不會被執行")
註解有助於使程式碼更具可讀性,尤其在團隊合作或開發大型專案時,清楚的註解可以幫助其他開發者快速理解代碼的意圖。
註解用來標註尚未完成的功能或可能需要改善的代碼,這些通常以 TODO 開頭:
範例:
# TODO: 優化這段程式碼來提高執行效率
vscode 中,選取code區塊後 使用command +/ (in Mac)or Ctrl+/ (in windows)即可變成註解
在 Python 中,Type Checking(型別檢查) 是檢查變數或表達式的資料型別的過程,以確保程式在運行時能夠正常處理這些數據。由於 Python 是一個動態型別語言,變數的型別是在程式運行期間動態決定的,而不是在編寫程式或編譯時就固定。
Python 採用動態型別檢查,這意味著你可以在不同時期給變數賦值不同的型別,而 Python 會在程式運行時自動檢查這些型別。
範例:
x = 10 # x 是一個整數
x = "Hello" # 現在 x 是一個字串
在這個範例中,變數 x 一開始是整數,但後來被賦值為字串。Python 允許這種變數型別的靈活變化,並且在運行期間動態檢查 x 的型別。
雖然 Python 是動態型別語言,但你可以使用一些工具來檢查變數的型別,這對於防止錯誤和提升代碼可讀性很有幫助。
範例:
x = 42
print(type(x)) # <class 'int'>
x = 42
print(isinstance(x, int)) # True
從 Python 3.5 開始,Python 引入了型別提示(Type Hinting),雖然 Python 不會強制執行這些型別提示,
但它可以幫助開發者明確變數、參數和返回值的型別,讓代碼更易讀,
並且有助於靜態型別檢查工具(如 mypy)發現潛在的型別錯誤。
範例:
def add(x: int, y: int) -> int:
return x + y
這表示函數 add 接收兩個整數型參數,並返回一個整數。這是一種靜態型別提示方式,不會改變 Python 的動態性,但可以幫助開發者及早發現型別錯誤。
沒錯,**靜態型別提示(Type Hinting)**在 Python 中的概念,與 TypeScript 在 JavaScript 中的作用非常相似。兩者都是用來在代碼中提前標註變數、參數或函數的資料類型,讓代碼更容易理解和維護,也幫助早期發現錯誤。
例如在 Python 中的靜態型別提示:
def greet(name: str) -> str:
return f"Hello, {name}"
greet(123) # 這會導致靜態檢查工具(例如 MyPy)報錯
在這裡,我們使用了 : str 來表示 name 必須是字串,-> str 表示這個函數的返回值也應該是一個字串。儘管 Python 本身不會在執行時強制檢查,但開發工具和靜態分析工具(例如 MyPy)會根據這些提示檢查潛在的錯誤
在 TypeScript 中類似的例子:
function greet(name: string): string {
return `Hello, ${name}`;
}
greet(123); // 這會在編譯時報錯
TypeScript 會在編譯時期直接檢查資料型別,這樣就能在代碼運行前發現問題。