ติดตั้ง Python – Visual Studio Marketplace (จะติดตั้ง Pylance – Visual Studio Marketplace ให้ด้วยเลย)
- Inlay Type Hints
- Code Style Checking
- Linting Python
1. Inlay Type Hints
กด Ctrl + Shit + p พิมพ์ว่า Preferences: Open Settings แล้วเลือกระดับ Workspace จะได้ไฟล์ .vscode\settings.json
ให้เพิ่ม 2 บรรทัดที่ไฟล์ settings.json
{ ... "python.analysis.inlayHints.functionReturnTypes": true, "python.analysis.inlayHints.variableTypes": true }
สร้างไฟล์ test.py ดังนี้
import time def fib(n): if n <= 1: return n return fib(n - 1) + fib(n - 2) def main(test_times=50): start = time.time() for _ in range(test_times): fib(30) print(f"Total time spent: {time.time() - start} s") main()
จะเห็น Type Hints แบบนี้
2. Code Style Checking
ตรวจสอบด้วย flake8 (pypi.org/project/flake8/)
ติดตั้ง flake8
> pip install flake8
ตรวจสอบ Code Style ด้วย flake8
flake8 path/to/code/to/check.py # or flake8 path/to/code/
> python -m flake8 test.py test.py:2:1: E302 expected 2 blank lines, found 0 test.py:6:1: E302 expected 2 blank lines, found 0 test.py:12:1: E305 expected 2 blank lines after class or function definition, found 1 test.py:12:7: W292 no newline at end of file
1. แก้ไข Code Style ด้วยมือ!!
อ่านได้ที่
- peps.python.org – PEP 8 – Style Guide for Python Code
- realpython.com – How to Write Beautiful Python Code With PEP 8
2. แก้ไข Code Style ด้วย VSCode
- Formatting Python in VS Code | code.visualstudio.com
โดยทำการ Format Document With … แล้วเลือก autopep8
ครั้งต่อไปก็ Format Document โดยกด Shift + Alt + F ได้เลย
import time def fib(n): if n <= 1: return n return fib(n - 1) + fib(n - 2) def main(test_times=50): start = time.time() for _ in range(test_times): fib(30) print(f"Total time spent: {time.time() - start} s") main()
ตรวจสอบ Code Style ด้วย flake8 อีกรอบจะผ่านละ
> python -m flake8 test.py
3. แก้ไข Code Style ด้วย black
ติดตั้ง black (pypi.org/project/black/)
> pip install black
ทำการ reformat ด้วย black (จะได้เหมือน reformat ด้วย VSCode เลย)
> python -m black test.py reformatted test.py All done! ✨ ? ✨ 1 file reformatted.
ตรวจสอบ Code Style ด้วย flake8 ก็จะผ่าน
3. Linting Python
- Linting Python in Visual Studio Code | code.visualstudio.com
เลือก linter (Pylint, flake8, mypy) เราเลือกติดตั้ง Pylint (https://marketplace.visualstudio.com/items?itemName=ms-python.pylint)
Run linting
Linting will automatically run when a Python file is opened or saved.
Errors and warnings are shown in the Problems panel (Ctrl+Shift+M) for open files, and are also highlighted in the code editor. Hovering over an underlined issue displays the details:
แต่ถ้าเจอ error ว่า Instance of 'xxx' has no 'yyy' member
(no-member / E1101)
แล้วไม่อยากให้ Pylint แจ้ง error ให้ใส่ # pylint: disable=maybe-no-member
ไว้ท้ายบรรทัด [#] หรือ ก่อนหน้าบรรทัดที่มีปัญหา
# pylint: disable=maybe-no-member results = service.tasklists().list(maxResults=10).execute()
results = service.tasklists().list(maxResults=10).execute() # pylint: disable=maybe-no-member
แล้ว error ว่า Instance of 'xxx' has no 'yyy' member
ของบรรทัดนั้นจะไม่แสดงละ