Đây có phải là cách phù hợp để sử dụng câu lệnh python "with" kết hợp với khối try-exception không ?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
Nếu đúng, hãy xem xét cách làm cũ:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
Lợi ích chính của câu lệnh "with" ở đây là chúng ta có thể loại bỏ ba dòng mã? Nó có vẻ không hấp dẫn đối với tôi đối với trường hợp sử dụng này (mặc dù tôi hiểu rằng câu lệnh "with" có những cách sử dụng khác).
CHỈNH SỬA: Chức năng của hai khối mã trên có giống hệt nhau không?
EDIT2: Một số câu trả lời đầu tiên nói chung về lợi ích của việc sử dụng "with", nhưng những câu trả lời đó dường như là lợi ích biên ở đây. Tất cả chúng ta đã (hoặc lẽ ra) gọi một cách rõ ràng là f.close () trong nhiều năm. Tôi cho rằng một lợi ích là những người viết mã cẩu thả sẽ được lợi khi sử dụng "with".