Đôi ba thứ hay ho đến từ python 3.7
Bài đăng này đã không được cập nhật trong 5 năm
Một điều khá hay ho ở python đó là mọi thứ đều được viết theo phong cách explicit
khiến người dùng dễ hiểu được bản chất của code (đơn giản nhất là "nó từ đâu đến?". Tuy nhiên, điều này cũng đồng nghĩa với hai chữ phiền phức
, lúc đặt debug, lúc viết class mới, ..v.v Phiên bản này đây sẽ giúp chúng ta thoải mái hơn khi code với python.
Breakpoint
Như các bản trước của python, thì mỗi khi đặt debug, ta lại phải dí cái dòng này vô, ghõ đến mòn cả tay
foo()
import pdb; pdb.set_trace() # debug, cái này ghõ nhiều đến mức viết tay còn nhanh hơn autocomplete :v..
bar()
Giờ đây, sẽ đơn giản chỉ là
foo()
breakpoint() # ngắn hơn tí, mà đọc nó cũng "make sense"
bar()
Thêm nữa, nếu ta thêm một biến môi trường PYTHONBREAKPOINT=0
thì breakpoint
sẽ được skip! Như vậy thì sao ư? Ta sẽ chả cần phải lo để quên breakpoint
ở trên production nữa (dù chả mấy khi nó xay ra, cơ mà ko cần lo nghĩ vẫn tốt hơn đúng ko )
Dataclass
Dù có cố phủ nhận như thế nào đi chăng nữa thì viết một class thông thường trong python khá là thốn, nào là __init__
, nào là __repr__
, .. sơ sơ chưa có tí logic nào đã cần phải có 2 cái rồi
class Foo:
def __init__(self, bar, boo='..'): # viết cái constructor kiểu này dễ ngán quá trời
self.bar = bar
self.boo = boo
def __repr__(self):
return "1 đoạn string gì đó đễ object dễ đọc thay vì địa chỉ của nó trong bộ nhớ"
def some_behavior(self):
# cuối cùng cũng đến lượt mình T_T
Với dataclass, viết class trong python sẽ ngắn gọn và tiện lợi hơn rất nhiều
from dataclasses import dataclass, field
@dataclass(order=True)
class Foo:
bar: str # á đù có cả declare type luôn
boo: str = '..'
def some_behavior(self):
# ớ đến lượt t rồi hả? sớm zậy?
Unittest - mode K
Cái unittest khá khó chịu là chạy test theo group mà cấu trúc vật lý nó méo theo group thì lại mất công đánh dấu gom chúng lại bằng decorator, cơ mà lười nên lại gõ path chạy từng cái một
python -m unittest -v tests.test_abc.test_create
python -m unittest -v tests.test_xyz.test_create
...
Với cái 3.7 thì chúng ta có thể dùng regex để lọc test với lệnh -k
, trong 1 vài trường hợp (như trên), cuộc sống sẽ trở nên tươi đẹp hơn hết
python -m unittest -k create # tuyệt vời!
Kết
Những điều kể trên không quá nhiều và cũng không phải là tất cả nội dung cập nhật của 3.7. Cơ mà với việc phát triển web thì tôi mấy cái kể trên thật quá là tuyệt. Lót dép hóng bản tiếp theo ..
All rights reserved