Hướng dẫn __init__.py python - __init__.py python
answer 1174 Đây là một phần của gói. Đây là tài liệu.Đây là tài liệu.
Nhưng chỉ cần nhấp vào liên kết, nó chứa một ví dụ, thêm thông tin và giải thích về các gói không gian tên, loại gói không có 3.1174 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ answer 685 Các tệp có tên 3được sử dụng để đánh dấu các thư mục trên đĩa dưới dạng các thư mục gói Python. Nếu bạn có các tập tin
và 8trên đường dẫn của bạn, bạn có thể nhập mã 9dưới dạng
hoặc là
Nếu bạn xóa 3tệp, Python sẽ không còn tìm các mô đun con trong thư mục đó nữa, vì vậy các nỗ lực nhập mô-đun sẽ thất bại.Các 3tập tin thường là trống rỗng, nhưng có thể được sử dụng
để xuất khẩu phần chọn của gói dưới tên thuận tiện hơn, giữ chức năng tiện nghi, vv Cho ví dụ trên, nội dung của các mô-đun init có thể được truy cập như
dựa trên điều nàyđiều này 685 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ answer 407 Ngoài việc gắn nhãn thư mục là gói Python và xác định 2, 3cho phép bạn xác định bất kỳ biến nào ở cấp gói. Làm như vậy thường thuận tiện nếu một gói xác định thứ gì đó sẽ được
nhập thường xuyên, theo kiểu giống như API. Mô hình này thúc đẩy sự tuân thủ triết lý "phẳng hơn là lồng nhau" của Pythonic.Một ví dụDưới đây là một ví dụ từ một trong những dự án của tôi, trong đó tôi thường nhập một lệnh 4gọi 5để tương tác với cơ sở dữ liệu của mình. Tôi đã viết một gói "cơ sở dữ liệu" với một vài
mô-đun:
Của tôi 3chứa mã sau đây:
Vì tôi xác định 5ở đây, tôi có thể bắt đầu một phiên mới bằng cú pháp bên dưới. Mã này sẽ được thực hiện giống nhau từ bên trong hoặc bên ngoài thư mục gói "cơ sở dữ liệu".
Tất nhiên, đây là một sự thuận tiện nhỏ - giải pháp thay thế sẽ là xác định 5trong
một tệp mới như "create_session.py" trong gói cơ sở dữ liệu của tôi và bắt đầu các phiên mới bằng cách sử dụng:
đọc thêmCó một chủ đề reddit khá thú vị bao gồm các cách sử dụng thích hợp 3ở đây:http://www.reddit.com/r/Python/comments/1bbbwk/whats_your_opinion_on_what_to_include_in_init_py/ Đa số ý kiến dường như là 3các tệp nên rất mỏng để tránh vi phạm triết lý "rõ ràng là tốt hơn ngầm".407 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ answer 138 Có 2 lý do chính cho 3
138 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ answer 94 Các 3tập tin làm cho danh bạ trị Python chứa nó như là mô-đun.Hơn nữa, đây là tệp đầu tiên được tải trong một mô-đun, vì vậy bạn có thể sử dụng nó để thực thi mã mà bạn muốn chạy mỗi khi mô-đun được tải hoặc chỉ định các mô hình con được xuất. 94 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ answer 69 Vì Python 3.3, 3không còn cần thiết để xác định các thư mục là các gói Python có thể nhập được.Kiểm tra PEP 420: Gói không gian tên ngầm định :PEP 420: Gói không gian tên ngầm định :
Đây là bài kiểm tra: 2tài liệu tham khảo: https://docs.python.org/3/whatsnew/3.3.html#pep-420-implicit-namespace-packages https://www.python.org/dev/peps/pep-0420/ Is __init__. py không cần thiết cho các gói trong Python 3? 69 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ answer 48 Trong Python định nghĩa của gói rất đơn giản. Giống như Java, cấu trúc phân cấp và cấu trúc thư mục là như nhau. Nhưng bạn phải có 3trong một gói. Tôi sẽ giải thích các 3tập tin với ví dụ dưới đây: 3 3có thể trống rỗng, miễn là nó tồn tại. Nó chỉ ra rằng thư mục nên được coi là một gói. Tất nhiên, 3cũng có thể thiết lập nội dung phù hợp.có thể trống rỗng, miễn là nó tồn tại. Nó chỉ ra rằng thư mục nên được coi là một gói. Tất nhiên, 3cũng có thể thiết lập nội dung phù hợp.Nếu chúng ta thêm một hàm trong module_n1: 4Sau khi chạy: 5Sau đó, chúng tôi đã theo gói phân cấp và gọi module_n1 là hàm. Chúng tôi có thể sử dụng 3trong subPackage_b như thế này: 6Sau khi chạy: 7Do đó sử dụng * nhập, gói mô-đun là tùy thuộc vào 3nội dung.48 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ answer 37 3 sẽ coi thư mục của nó là một mô-đun có thể tải. sẽ coi thư mục của nó là một mô-đun có thể tải.Đối với những người thích đọc mã, tôi đặt bình luận của Nhà giả kim Two-Bit ở đây.bình luận của Nhà giả kim Two-Bit ở đây. 837 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ answer 30
3tệp, bạn vẫn nên bao gồm
một tệp.Đối với những người thích đọc mã, tôi đặt bình luận của Nhà giả kim Two-Bit ở đây. 37 hữu ích 0 bình luận chia sẻ Mặc dù Python hoạt động mà không có 9Nó chỉ định một gói nên được coi là một mô-đun, do đó bao gồm nó (ngay cả khi nó trống). 4có chứa điều này: 0Cũng có trường hợp bạn thực sự có thể sử dụng một 5bạn cần một trong những điều sau đây: 1Hãy tưởng tượng bạn có cấu trúc tệp sau: 4bên trong 7(thời gian chạy / phụ thuộc chẳng hạn) nhưng bạn chỉ muốn nhập 7.Và 4để 3sau đó bạn có thể sử dụng
5bằng cách chỉ nhập khẩu 7: 2Để sử dụng, 3được coi là một phần của gói.Có thể ở đó bạn cần (hoặc muốn) để giữ 4thực sự là nhập 3từ
6gói ( xem cấu trúc tệp gói ở đây ):
Điều này hoạt động vì |