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 :)!
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE