Tôi hiện đang trải qua các hướng dẫn Lynda Python và trong phần nói về máy phát điện tôi thấy đoạn mã sau:Python: cho vòng lặp giữa if-else, how/why this this works?
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
else:
return True
Tôi không bắt nó lúc đầu, nhưng như tôi đã đi qua đoạn code tôi nhận thấy rằng từ khóa else
có toàn bộ vòng lặp giữa nó và một số if
ở cùng mức thụt đầu dòng. Trước sự ngạc nhiên của tôi, mã không chỉ chạy, nó thực sự tạo ra hành vi đúng.
Nếu tôi thay thế vòng lặp for bằng tuyên bố đơn giản print("Hello, World")
, chỉ khi đó tôi mới nhận được lỗi thông dịch dự kiến.
Lý do đằng sau cú pháp này là gì và tại sao nó lại hoạt động với các câu lệnh vòng lặp nhưng không hoạt động với những người khác như print()
?
Để tham khảo, tôi dự kiến sẽ có các mã được viết như sau:
def isprime(n):
if n == 1:
return False
for x in range(2, n):
if n % x == 0:
return False
return True
điều này có vẻ bình thường đối với tôi .. trên thực tế nó tương đương với cách bạn mong đợi (trong khối mã thứ hai), bởi vì ngắt không bao giờ được gọi trong vòng lặp – wim