หลังจากที่ Python 3.5 ได้เปิดตัวออกมา ได้มีไวยากรณ์หนึ่งที่เพิ่มเข้ามาตั้งแต่ Python 3.5 นั่นคือ
Type hintsType hints คือ การบอกว่าฟังก์ชันหรือ method ต้องการตัวแปรชนิดใด และคืนค่าออกมาเป็นชนิดข้อมูลชนิดใด ช่วยให้เราสามารถเขียนโค้ดมีคุณภาพมากยิ่งขึ้น
ในภาษา Python ได้มีการเพิ่มการรองรับ
type hints มาตั้งแต่ Python 3.5 เป็นต้นมาสำหรับ Python ที่ต่ำกว่า 3.5 สามารถใช้งาน
type hints โดย backport ด้วยคำสั่ง pip install typingการใช้งาน
type hintsสมมติว่าต้องการสร้างฟังก์ชันบวกเลขด้วยข้อมูลชนิด
int โดยที่ไม่ใช้ type hintsผลลัพธ์
9 45
จะเห็นได้ว่า หากเป็น
str บวกกันจะรวมข้อความกัน ทั้งที่เราอยากให้เฉพาะข้อมูล int เท่านั้นที่บวกกันได้ เพราะเราไม่ได้กำหนด method ว่าต้องการตัวแปรชนิดใดเมื่อลองมาใช้ Type hints
การใช้ Type hints ทำได้ง่าย ๆ เพียงแค่เติม : หลังพารามิเตอร์แต่ละตัวแล้วใส่ชนิดข้อมูลที่ต้องการลงไป และใส่ -> ตามด้วยชนิดข้อมูลที่จะคืนค่าหลัง ) ดังนี้
หากลองรันจะรันได้ปกติ
ผลลัพธ์
9 45
แต่หากนำไปใช้ใน IDE อย่าง PyCharm จะมีการแจ้งเตือนหากใช้ข้อมูลผิดชนิดข้อมูลที่กำหนดไว้
| Type hints ใน Python เมื่อใช้กับ Visual Studio Code |
ตัวอย่างเช่น
ที่มา : https://docs.python.org/3/library/typing.html
การใช้งาน Type hints ใน Python กับ Visual Studio Code
ก่อนอื่นให้ทำการติดตั้ง mypy ด้วยคำสั่ง pip install mypyแล้วทำการติดตั้งปล็กอิน Python (https://marketplace.visualstudio.com/items?itemName=ms-python.python) และทำการเปิดไฟล์ settings.json
- Windows ไฟล์อยู่ที่ %APPDATA%\Code\User\settings.json
- macOS ไฟล์อยู่ที่ $HOME/Library/Application Support/Code/User/settings.json
- Linux ไฟล์อยู่ที่ $HOME/.config/Code/User/settings.json
แล้วให้เติม
"python.linting.enabled": true,
"python.linting.mypyEnabled": true
ลงไปในไฟล์ settings.json แล้วบันทึก เพียงเท่านี้ก็สามารถใช้งาน Type hints ใน Python กับ Visual Studio Code ได้แล้ว
อ่านเอกสารเพิ่มเติมได้ที่ https://docs.python.org/3/library/typing.html

0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)