tôi đã bằng cách nào đó ngạc nhiên bởi hành vi sau đây:__main__ và Phạm vi trong python
def main():
print "%s" % foo
if __name__ == "__main__":
foo = "bar"
main()
tức là chức năng mô-đun có quyền truy cập vào kèm theo biến trong __main__
. Giải thích cho nó là gì?
Không có phạm vi '__main__'. Có một 'if' xảy ra để so sánh một biến xảy ra được gọi là' __name__' với một cái gì đó xảy ra là chuỗi ký tự '' __main __ "'. – delnan
@delnan: '__main__' là một mô-đun và mỗi mô-đun có phạm vi được liên kết. Hãy thử 'import __main__; gõ (__ main __) 'trong trình thông dịch (không phải trong IPython). –
@Sven: Tôi biết. OP nên biết tại một số điểm. Nhưng có vẻ như với tôi OP thay vì bối rối nếu các câu lệnh với các phần của điều kiện và nghĩ rằng 'if' giới thiệu một phạm vi mới - đó sẽ là một vấn đề bức xúc hơn. (Phải thừa nhận rằng, "Không có phạm vi' __main__' là gây hiểu lầm, nói đúng) – delnan