Việc sử dụng __ chính __ trong python là gì?

Chúng ta thường thấy

print[f'The __name__ from script1 is "{__name__}"']
8 trong các tập lệnh Python mà chúng tôi tìm thấy trực tuyến hoặc một trong nhiều tập lệnh do chúng tôi tự viết

Tại sao chúng ta sử dụng câu lệnh if đó khi chạy các chương trình Python của mình?

Thuộc tính __name__ và phạm vi __main__

Thuộc tính

print[f'The __name__ from script1 is "{__name__}"']
9 theo mặc định là một trong những tên trong phạm vi cục bộ hiện tại. Trình thông dịch Python tự động thêm giá trị này khi chúng tôi đang chạy tập lệnh Python hoặc nhập mã của chúng tôi dưới dạng mô-đun

Hãy thử lệnh sau trên trình thông dịch Python của bạn. Bạn có thể phát hiện ra rằng

print[f'The __name__ from script1 is "{__name__}"']
9 thuộc danh sách các thuộc tính trong
print[f'The __name__ from script1 is "{__name__}"']
1

dir[]

print[f'The __name__ from script1 is "{__name__}"']
9 trong Python là một biến đặc biệt xác định tên của lớp hoặc mô-đun hiện tại hoặc tập lệnh mà từ đó nó được gọi

Tạo một thư mục mới có tên là

print[f'The __name__ from script1 is "{__name__}"']
3 để chúng tôi có thể viết một vài đoạn mã để hiểu cách thức hoạt động của tất cả. Trong thư mục đó, tạo một tệp mới,
print[f'The __name__ from script1 is "{__name__}"']
4 với mã sau

print[f'The __name__ from script1 is "{__name__}"']

Đó là một đường cong. Chúng tôi hy vọng rằng tên đó sẽ là

print[f'The __name__ from script1 is "{__name__}"']
5, vì hồ sơ của chúng tôi. Đầu ra
print[f'The __name__ from script1 is "{__name__}"']
6 nghĩa là gì?

Theo mặc định, khi một tập lệnh được thực thi, trình thông dịch sẽ đọc tập lệnh và gán chuỗi

print[f'The __name__ from script1 is "{__name__}"']
6 cho từ khóa
print[f'The __name__ from script1 is "{__name__}"']
9

Nó thậm chí còn thú vị hơn khi tập lệnh trên được nhập vào tập lệnh khác. Hãy xem xét một tệp Python có tên

print[f'The __name__ from script1 is "{__name__}"']
9 với đoạn mã sau

Như bạn có thể thấy, khi tập lệnh được thực thi, đầu ra được đưa ra là

print[f'The __name__ from script1 is "{__name__}"']
5 biểu thị tên của tập lệnh. Câu lệnh in cuối cùng nằm trong phạm vi của
dir[]
01 và khi nó được thực thi, đầu ra sẽ được in dưới dạng.
print[f'The __name__ from script1 is "{__name__}"']
6

Bây giờ chúng ta đã hiểu cách Python sử dụng phạm vi

print[f'The __name__ from script1 is "{__name__}"']
9 và khi nó cung cấp cho nó giá trị "__main__", hãy xem lý do tại sao chúng ta kiểm tra giá trị của nó trước khi thực thi mã

nếu __name__ == "__main__" trong Hành động

Chúng tôi sử dụng câu lệnh if để chạy các khối mã chỉ khi chương trình của chúng tôi là chương trình chính được thực thi. Điều này cho phép chương trình của chúng ta có thể tự thực thi được, nhưng thân thiện với các mô-đun Python khác, những người có thể muốn nhập một số chức năng mà không cần phải chạy mã

Hãy xem xét các chương trình Python sau

a]

dir[]
04 chứa một hàm có tên là
dir[]
05 chỉ được gọi từ ngữ cảnh chính

dir[]
0

Đây là kết quả khi

dir[]
04 được gọi

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Khi tập lệnh được thực thi trực tiếp, từ khóa

print[f'The __name__ from script1 is "{__name__}"']
9 được gán cho
print[f'The __name__ from script1 is "{__name__}"']
6 và khối mã theo điều kiện
print[f'The __name__ from script1 is "{__name__}"']
8 được thực thi

b] Đây là điều xảy ra khi đoạn mã này được nhập từ

dir[]
70

dir[]
7

Khối bên dưới

print[f'The __name__ from script1 is "{__name__}"']
8 từ
dir[]
04 đã không thực thi, như mong đợi. Điều này xảy ra vì từ khóa
print[f'The __name__ from script1 is "{__name__}"']
9 hiện được gán với tên của tập lệnh.
dir[]
74. Điều này có thể được xác minh bằng câu lệnh in đã cho in giá trị được gán cho từ khóa
print[f'The __name__ from script1 is "{__name__}"']
9

__name__ == "__main__" giúp phát triển như thế nào?

Dưới đây là một số trường hợp sử dụng để sử dụng câu lệnh if đó khi tạo tập lệnh của bạn

  • Kiểm thử là một cách thực hành tốt không chỉ giúp bắt lỗi mà còn đảm bảo mã của bạn hoạt động theo yêu cầu. Các tệp thử nghiệm phải nhập một hàm hoặc đối tượng cho chúng. Trong những trường hợp này, chúng tôi thường không muốn tập lệnh được chạy dưới dạng mô-đun chính
  • Bạn đang tạo một thư viện nhưng muốn đưa vào bản trình diễn hoặc các trường hợp thời gian chạy đặc biệt khác cho người dùng. Bằng cách sử dụng câu lệnh if này, các mô-đun Python sử dụng mã của bạn làm thư viện sẽ không bị ảnh hưởng

Tạo một __main__. Tệp py cho Mô-đun

Mục đích của việc có khối

print[f'The __name__ from script1 is "{__name__}"']
8 là để đoạn mã có điều kiện được thực thi khi tập lệnh nằm trong phạm vi
print[f'The __name__ from script1 is "{__name__}"']
6. Tuy nhiên, khi tạo các gói bằng Python, sẽ tốt hơn nếu mã được thực thi trong ngữ cảnh
print[f'The __name__ from script1 is "{__name__}"']
6 được viết trong một tệp riêng biệt

Hãy xem xét ví dụ sau - một gói để thực hiện các phép tính. Cấu trúc cây tệp cho một kịch bản như vậy có thể được hình dung như

Cấu trúc cây chứa

dir[]
79 làm thư mục gốc và thư mục con được gọi là
print[f'The __name__ from script1 is "{__name__}"']
40.
print[f'The __name__ from script1 is "{__name__}"']
41 trong thư mục
dir[]
79 chứa nội dung sau

print[f'The __name__ from script1 is "{__name__}"']
4

print[f'The __name__ from script1 is "{__name__}"']
43 chứa

print[f'The __name__ from script1 is "{__name__}"']
9

print[f'The __name__ from script1 is "{__name__}"']
44 chứa

print[f'The __name__ from script1 is "{__name__}"']
1

Ngay bên ngoài thư mục

dir[]
79, tập lệnh có thể được thực thi và logic bên trong
print[f'The __name__ from script1 is "{__name__}"']
41 được thực thi bằng cách gọi

print[f'The __name__ from script1 is "{__name__}"']
4

Cấu trúc này cũng cung cấp giao diện gọn gàng hơn cho vị trí không gian làm việc, cách tổ chức các thư mục và điểm vào được xác định bên trong một tệp riêng biệt có tên là

print[f'The __name__ from script1 is "{__name__}"']
41

Phần kết luận

print[f'The __name__ from script1 is "{__name__}"']
48 chỉ chạy các khối mã khi tập lệnh Python của chúng tôi đang được thực thi trực tiếp từ người dùng. Điều này rất hữu ích vì nó cho phép mã của chúng ta có hành vi khác khi nó được thực thi dưới dạng chương trình thay vì được nhập dưới dạng mô-đun

Khi viết các mô-đun lớn, chúng ta có thể chọn cách tiếp cận có cấu trúc hơn là có tệp

print[f'The __name__ from script1 is "{__name__}"']
41 để chạy mô-đun. Đối với tập lệnh độc lập, bao gồm
print[f'The __name__ from script1 is "{__name__}"']
8 là phương pháp đơn giản hơn để tách API khỏi chương trình

Điều gì xảy ra nếu __ name __ == __ main __ main[] trong Python?

Tóm lại. Nó Cho phép bạn thực thi mã khi tệp chạy dưới dạng tập lệnh , nhưng không phải khi nó được nhập dưới dạng mô-đun. Đối với hầu hết các mục đích thực tế, bạn có thể coi khối điều kiện mà bạn mở bằng if __name__ == "__main__" như một cách để lưu trữ mã chỉ chạy khi tệp của bạn được thực thi dưới dạng tập lệnh.

Việc sử dụng __ tên __ trong Python là gì?

__name__ là biến tích hợp dùng để đánh giá tên của mô-đun hiện tại. Do đó, nó có thể được sử dụng để kiểm tra xem tập lệnh hiện tại đang được chạy riêng hay được nhập ở nơi khác bằng cách kết hợp tập lệnh đó với câu lệnh if , như minh họa bên dưới.

Điểm của __ tên __ là gì?

__name__ == "__main__" chỉ chạy các khối mã khi tập lệnh Python của chúng tôi đang được thực thi trực tiếp từ người dùng . Điều này rất hữu ích vì nó cho phép mã của chúng ta có hành vi khác khi nó được thực thi dưới dạng chương trình thay vì được nhập dưới dạng mô-đun.

__ tệp __ có nghĩa là gì trong Python?

__file__ là tên đường dẫn của tệp mà mô-đun được tải từ đó , nếu nó được tải từ một tệp.

Chủ Đề