Hướng dẫn init _.py trong python
Trong phần 2 này, chúng ta sẽ cùng nhau tìm hiểu thêm về python package và module. 1. Python packagesMột cách đơn giản nhất, nếu module chỉ đơn thuần là file có đuôi là Packages là phương pháp để quản lý python's module namspace bằng cách sử dụng "dotted module names". Ví dụ, khi gõ module
name Tương tự như việc sử dụng module để giúp người viết module không phải lo lắng là bị trùng tên biến/hàm ở các module của người khác viết, việc sử dụng dotted module names sẽ giúp người viết multi-module packages như là NumPy hay Pillow không phải lo lắng về việc bị trùng tên module với người khác. 2. Import statementGiả sử như bạn muốn design một collection of modules ( a "package") để xử lý các sound files và sound data. Các sound file này sẽ có rất nhiều format khác nhau (thông thường được nhận biết thông qua extension của chúng, ví dụ: Tiếp theo, sẽ có rất nhiều tác vụ mà bạn muốn thực hiện trên sound data (ví dụ như mixing, thêm echo, áp dụng equalizer function, tạo ra các hiệu ứng âm thanh,..), như vậy, khả năng là chúng ta sẽ phải viết một loạt các module kéo dài vô tận để thực hiện các tác vụ này. Dưới đây là một cấu trúc của package mà chúng ta có thể sử dụng:
File Trong trường hợp đơn giản nhất, thì Người dùng của package có thể import riêng rẽ từng module, ví dụ:
Một cách khác để import cái submodule:
Hoặc ta có thể tiến xa hơn nữa, import thẳng cái function vào symbol table luôn:
So sánh Với Về thứ tự, thì import statement sẽ kiểm tra xem cái tên đó có phải là một định nghĩa trong cái package đó hay không (function, class, variable), nếu không có, thì nó sẽ ngầm hiểu đây là module và thử load module. Với 3. Package Relative ImportsKhi mà
package được cấu trúc thành các subpackages (như ví dụ cái Ví dụ, nếu module Hoặc, ta có thể viết releative import, vẫn sử dụng dạng
Note: với absolute import thì ta có thể sử dụng hoặc là
thì 4. __all__ variableCó một câu hỏi, là chuyện gì xảy ra khi người dùng viết Trường hợp lý tưởng nhất, là bên trong file
Khi đó, interpreter sẽ chỉ import các module có name được cung cấp trong danh sách này. Trường hợp biến Tới đây, thì ta sẽ thấy hai cách dưới đây là tương đương nhau:
Tuy cả 2 cách đều cho ra kết quả như nhau, |