Get in touch
or send us a question?
CONTACT

1 số thói quen khi code Python nên bỏ (P1)

1. Lỗi không throw Exception

def bare_except():
    while True:
        try:
            s = input("Input number: ...")
            x = int(s)
            break
        except: 
            print("Not a number, try again")

Nếu không throw Exception ở đây thì sẽ không có cách nào để dừng chương trình kể cả khi sử dụng tổ hợp Ctrl + C thì cũng không ngừng được vì KeyboardInterrupt là sub class của class Exception. Vậy nên luôn throw Exception cụ thể ví dụ:

def bare_except():
    while True:
        try:
            s = input("Input number: ...")
            x = int(s)
            break
        except Exception: 
            print("Not a number, try again")

2. Không sử dụng comprehensions:

def dump_init():
    vocab = {}
    for i in range(100):
        vocab[i] = i*i
    

Việc không sử dụng comprehensions sẽ trở nên dài và khó đọc.

# sử dụng comprehensions
def dump_init():
    vocab = {i*i for i in range(100)}

3. Check kiểu dữ liệu

Check kiểu dữ liệu bằng operator ==

from collections import namedtuple
def check_type():
    SubTuple = namedtuple("SubTuple", ['b', 'c'])
    a = SubTuple(1,2)
    if type(a) == tuple:
        return True
    return False

Đoạn code trên sẽ chạy sai vì SubTupe nó sẽ là sub class của tuple không phải là tuple.

Thay vào đó hay dùng isinstance()

from collections import namedtuple
def check_type():
    SubTuple = namedtuple("SubTuple", ['b', 'c'])
    a = SubTuple(1,2)
    print(type(a))
    if isinstance(a, tuple):
        return True
    return False

4. Kiểm tra bool hoặc len của object

def check_bool_len(x):
    if bool(x):
        return False
    if len(x) != 0:
        return False
    return True

Thực chất cách trên không sai nhưng về bản chất thì nó không chắc check x như sau:

def check_bool_len(x):
    if x:
        return False
    return True

Như vậy thì sẽ tiết kiệm và dễ đọc hơn rất nhiều.

Cảm ơn vì đã đọc và hãy chờ đợi phần tiếp theo :)!