Tôi mới sử dụng Python, vì vậy đây có thể là một câu hỏi phạm vi đơn giản. Các mã sau đây trong một tập tin Python (mô-đun) là khó hiểu cho tôi một chút:Phạm vi của biến được khởi tạo trong câu lệnh if là gì?
if __name__ == '__main__':
x = 1
print x
Trong các ngôn ngữ khác mà tôi đã từng làm việc tại, mã này sẽ ném một ngoại lệ, như biến x
là địa phương để báo cáo kết quả if
và nên không tồn tại bên ngoài nó. Nhưng mã này thực thi và in 1. Có ai giải thích được hành vi này không? Tất cả các biến được tạo trong một mô-đun toàn cầu/có sẵn cho toàn bộ mô-đun?
Một quirk khác bạn có thể không biết: nếu câu lệnh 'if' ở trên không giữ đúng (tức là' __name__' là * không * ''__main __'', ví dụ khi bạn nhập mô-đun thay vì thực thi nó cấp cao nhất), sau đó 'x' sẽ không bao giờ bị ràng buộc, và câu lệnh' print x' tiếp theo sẽ ném một 'NameError: name 'x' không được định nghĩa'. – Santa