__ init __ Trong thư mục Python là gì?
Gói Python chỉ đơn giản là một tập hợp các mô-đun python có tổ chức. Mô-đun python chỉ đơn giản là một tệp python Show
Tại sao tôi muốn tạo một gói bằng cách sử dụng __init__.py?Tạo một gói với Nó cung cấp một cơ chế để bạn nhóm các tập lệnh python riêng biệt thành một mô-đun có thể nhập được Hãy chạy qua một số ví dụCách tốt nhất để hiểu tại sao bạn sẽ sử dụng Mã trong hướng dẫn này sẽ hoạt động với Python 2 hoặc 3. Chỉ cần nhớ, nếu bạn đang sử dụng 2 thì bạn sẽ cần sử dụng chức năng # stringLength.py def stringLength(inStr): return len(inStr)2 Giả sử chúng tôi có ba mô-đun chúng tôi đã tạo someFolder |-- stringLength.py |-- stringToUpper.py `-- stringToLower.py Hãy nhớ rằng một mô-đun chỉ là một tên khác cho bất kỳ tệp python nào Ví dụ của chúng tôi, nội dung của các tệp này là như sau # stringLength.py def stringLength(inStr): return len(inStr) # stringToUpper.py def stringToUpper(inStr): return inStr.upper() # stringToLower.py def stringToLower(inStr): return inStr.lower() Rõ ràng, các chức năng này là vô dụng, nhưng nó giúp phục vụ như một mô hình cho khái niệm cơ bản rằng chúng ta có một số mô-đun python mà chúng ta đã viết có liên quan đến nhau. Vì vậy, nếu không tạo gói và sử dụng Chà, chúng tôi chỉ có thể nhập các tệp này nếu chúng nằm trong thư mục hiện tại mà bất kỳ tập lệnh nào chúng tôi đang chạy đều chạy từ đó Chà, chúng ta có thể sử dụng các tệp này trong tập lệnh Python mới nhưng với một cảnh báo chính
Để minh họa điều đó, hãy tạo một tệp có tên # stringLength.py def stringLength(inStr): return len(inStr)4 tận dụng các mô-đun của chúng tôi # example1.py import stringLength import stringToLower import stringToUpper some_string = "Hello, Universe!" print(stringLength.stringLength(some_string)) print(stringToLower.stringToLower(some_string)) print(stringToUpper.stringToUpper(some_string)) Thêm một khoảng trống __init__.pyĐiều gì sẽ xảy ra nếu chúng ta muốn tách các tập lệnh này thành một thư mục để sắp xếp chúng ngăn nắp hơn? Chà, đó là lúc tệp Trước tiên, hãy di chuyển các tập lệnh của chúng ta vào một thư mục con mới và gọi nó là. # stringLength.py def stringLength(inStr): return len(inStr)7. Sau đó, tạo một tệp trống trong thư mục đó có tên là __init__.py Đây là cấu trúc tệp/thư mục mới của chúng tôi ________số 8_______ Vì vậy, bây giờ hãy kiểm tra chính xác những gì Hãy tạo một tệp # stringToUpper.py def stringToUpper(inStr): return inStr.upper()0 mới # example2.py import string_func.stringLength import string_func.stringToLower import string_func.stringToUpper some_string = "Hello, Universe!" print(string_func.stringLength.stringLength(some_string)) print(string_func.stringToLower.stringToLower(some_string)) print(string_func.stringToUpper.stringToUpper(some_string)) Vì vậy, bây giờ chúng ta có thể truy cập các hàm chuỗi của mình theo cách này. Điều này thật tuyệt, vì tất cả chúng đều nằm trong một thư mục riêng biệt, nhưng cú pháp chắc chắn không ngắn gọn lắm. Hãy xem liệu chúng ta có thể dọn dẹp mọi thứ một chút bằng cách chỉnh sửa tệp Thêm nhập vào init. pyMở tệp # __init__.py from .stringLength import stringLength from .stringToLower import stringToLower from .stringToUpper import stringToUpper Lưu ý rằng # stringToUpper.py def stringToUpper(inStr): return inStr.upper()3 trước tên mô-đun là không cần thiết kể từ Python 3 vì nó nghiêm ngặt hơn đối với việc nhập tương đối. https. // stackoverflow. com/questions/12172791/changes-in-import-statement-python3?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa Và vì vậy với điều đó trong # example3.py import string_func some_string = "Hello, Universe!" print(string_func.stringLength(some_string)) print(string_func.stringToLower(some_string)) print(string_func.stringToUpper(some_string)) Bây giờ cú pháp ngắn hơn rất nhiều và bạn có thể thấy rằng # stringLength.py def stringLength(inStr): return len(inStr)7 đang hoạt động giống như mô-đun của chính nó Vì vậy, về cơ bản đó là những gì Gỡ lỗi # stringToUpper.py def stringToUpper(inStr): return inStr.upper() 8 Vấn đềVề cơ bản, có 3 mẹo tôi có để gỡ lỗi các sự cố nhập
Để biết thêm thông tin về các gói và mô-đun python, bạn có thể xem kiểm tra tài liệu về python trên đó Bạn cũng có thể xem podcast Talk Python To Me tuyệt vời này với David Beazley, nơi anh ấy thảo luận về chủ đề này, cũng như bài nói chuyện của David về cùng chủ đề Mục đích của __ init là gì?Phương thức __init__ cho phép lớp khởi tạo các thuộc tính của đối tượng và không phục vụ mục đích nào khác . Nó chỉ được sử dụng trong các lớp học.
Mục đích của __ init __ py trong thư mục dự án * là gì?__init__. py cho phép trình thông dịch Python biết rằng thư mục chứa mã cho mô-đun Python . Một __init__. tệp py có thể để trống. Nếu không có, bạn không thể nhập các mô-đun từ thư mục khác vào dự án của mình.
__ init __ có chạy tự động không?Ghi chú. Hàm __init__() được gọi tự động mỗi khi lớp được sử dụng để tạo đối tượng mới .
Sự khác biệt giữa __ init __ và __ chính __ là gì?__trong đó__. py , trong số những thứ khác, gắn nhãn một thư mục là thư mục python và cho phép bạn đặt các biến ở cấp độ rộng của gói. __chủ yếu__. py , trong số những thứ khác, được chạy nếu bạn cố chạy một nhóm tệp python đã nén. __chủ yếu__. py cho phép bạn thực thi các gói |