Tôi chưa quen với Python, vì vậy đây có lẽ là một câu hỏi đơn giản. Đoạn mã sau trong tệp Python (mô-đun) làm tôi hơi bối rối:
if __name__ == '__main__':
x = 1
print x
Trong các ngôn ngữ khác mà tôi đã làm việc, mã này sẽ đưa ra một ngoại lệ, vì x
biến này là cục bộ của if
câu lệnh và không nên tồn tại bên ngoài nó. Nhưng mã này thực thi và in 1. Có ai có thể giải thích hành vi này không? Có phải 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?
if
tuyên bố trên không giữ đúng (ví dụ,__name__
là không'__main__'
, ví dụ như khi bạn nhập các module thay vì thực hiện nó cấp cao nhất), sau đóx
sẽ không bao giờ bị ràng buộc, và sau đóprint x
tuyên bố sẽ ném aNameError: name 'x' is not defined
.