Mẫu đăng ký python

Django nhanh và đơn giản giúp chúng ta có thể thiết lập web web trong thời gian ngắn. Ngoài ra, Django còn có tài liệu rất tốt, cộng đồng Django đông và lớn mạnh

Nó tuân theo nguyên tắc DRY (Don't repeat yourself - Đừng lặp lại chính mình), trong khi các Framework khác lại không coi trọng điều này. Django cũng hỗ trợ ORM (Object Relistic Mapping)

Mô hình MTV pattern

  • Django quyền theo mô hình MTV (Model-Template-View) thay vì mô hình MVC (Model-View-Controller)
  • Mô hình được sử dụng khi tạo ứng dụng tương tác với người dùng
  • Mô hình này bao gồm mã HTML với Ngôn ngữ mẫu DJango (DTL)
  • Chế độ xem (tương ứng với Bộ điều khiển của MVC) là mã được viết để kiểm tra sự tương tác giữa Mô hình và Mẫu, nói cách khác là điều hướng các Yêu cầu từ Máy khách gửi lên Máy chủ và trả kết quả từ Máy chủ xuống Máy khách

Để code Django, chúng ta phải cài đặt Python. Bạn có thể cài đặt Python và Pip theo hướng dẫn này, đây là hướng dẫn cài đặt với Ubuntu và mình cũng sẽ viết mã trên hệ điều hành Ubuntu

Phiên bản Python mình sử dụng là Python 3. 7, các bạn cũng có thể cài đặt Python với các phiên bản SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 6 khác

Khởi tạo dự án

Việc đầu tiên là cài đặt môi trường ảo để phát triển dự án, có rất nhiều thư viện python có thể thực hiện được điều này từ virtualenv đến pipenv. Để thuận tiện, mình luôn sử dụng pipenv để triển khai cài đặt. Ta run command SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 7

Tiếp theo là tạo thư mục chứa dự án và chạy môi trường ảo

$ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell

Lúc này, dòng lệnh có dạng SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 8 tức là chúng ta đang ở trong môi trường ảo là SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 9

Create code project with # Để lên trên import environ env = environ.Env( DEBUG=(bool, False) ) environ.Env.read_env() 0 command. Lệnh này sẽ tạo tất cả mã cần có cho 1 dự án Django ban đầu, mình thêm dấu # Để lên trên import environ env = environ.Env( DEBUG=(bool, False) ) environ.Env.read_env() 1 vào cuối, sẽ hơi khác so với thông thường khi không có dấu # Để lên trên import environ env = environ.Env( DEBUG=(bool, False) ) environ.Env.read_env() 1

________số 8

Lúc này, dòng lệnh sẽ xuất hiện 1 đường dẫn http. //127. 0. 0. 1. 8000/ và chúng ta truy cập vào đường dẫn này sẽ có định dạng

Nếu bạn thoát khỏi trình thông dịch Python và nhập lại, các định nghĩa bạn đã tạo (hàm và biến) sẽ bị mất. Do đó, nếu bạn muốn viết một chương trình dài hơn một chút, tốt hơn hết bạn nên sử dụng trình soạn thảo văn bản để chuẩn bị đầu vào cho trình thông dịch và chạy nó với tệp đó làm đầu vào thay thế. Điều này được gọi là tạo một kịch bản. Khi chương trình của bạn dài hơn, bạn có thể muốn chia nó thành nhiều tệp để bảo trì dễ dàng hơn. Bạn cũng có thể muốn sử dụng một chức năng tiện dụng mà bạn đã viết trong một số chương trình mà không cần sao chép định nghĩa của nó vào từng chương trình

Để hỗ trợ điều này, Python có một cách để đưa các định nghĩa vào một tệp và sử dụng chúng trong một tập lệnh hoặc trong một phiên bản tương tác của trình thông dịch. Một tệp như vậy được gọi là một mô-đun;

Một mô-đun là một tệp chứa các định nghĩa và câu lệnh Python. Tên tệp là tên mô-đun có hậu tố >>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 7 được thêm vào. Trong một mô-đun, tên của mô-đun (dưới dạng chuỗi) có sẵn dưới dạng giá trị của biến toàn cục >>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 8. Chẳng hạn, sử dụng trình soạn thảo văn bản yêu thích của bạn để tạo tệp có tên >>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 9 trong thư mục hiện tại với nội dung sau

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 2

Bây giờ hãy nhập trình thông dịch Python và nhập mô-đun này bằng lệnh sau

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 3

Điều này không thêm trực tiếp tên của các hàm được xác định trong SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 40 vào không gian tên hiện tại (xem Python Scopes and Namespaces for more details); it only adds the module name SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 40 there. Using the module name you can access the functions:

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo'

Nếu bạn có ý định sử dụng một chức năng thường xuyên, bạn có thể gán nó cho một tên địa phương

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 4

6. 1. Thông tin thêm về Mô-đun¶

Một mô-đun có thể chứa các câu lệnh thực thi cũng như các định nghĩa hàm. Các câu lệnh này nhằm mục đích khởi tạo mô-đun. Chúng chỉ được thực thi khi tên mô-đun xuất hiện lần đầu tiên trong câu lệnh nhập. 1 (Chúng cũng được chạy nếu tệp được thực thi dưới dạng tập lệnh. )

Mỗi mô-đun có không gian tên riêng của nó, được sử dụng làm không gian tên chung bởi tất cả các chức năng được xác định trong mô-đun. Do đó, tác giả của một mô-đun có thể sử dụng các biến toàn cục trong mô-đun mà không phải lo lắng về xung đột tình cờ với các biến toàn cục của người dùng. Mặt khác, nếu bạn biết mình đang làm gì, bạn có thể chạm vào các biến toàn cục của mô-đun với cùng ký hiệu được sử dụng để chỉ các chức năng của nó, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 42

Các mô-đun có thể nhập các mô-đun khác. Theo thông lệ nhưng không bắt buộc phải đặt tất cả các câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 43 ở đầu mô-đun (hoặc tập lệnh, đối với vấn đề đó). Tên mô-đun đã nhập, nếu được đặt ở cấp cao nhất của mô-đun (bên ngoài bất kỳ chức năng hoặc lớp nào), sẽ được thêm vào không gian tên chung của mô-đun

Có một biến thể của câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 43 nhập tên từ mô-đun trực tiếp vào không gian tên của mô-đun nhập. Ví dụ

$ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 1

Điều này không giới thiệu tên mô-đun mà quá trình nhập được thực hiện trong không gian tên cục bộ (vì vậy trong ví dụ, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 40 không được xác định)

Thậm chí còn có một biến thể để nhập tất cả các tên mà mô-đun xác định

$ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 3

Thao tác này nhập tất cả các tên ngoại trừ những tên bắt đầu bằng dấu gạch dưới (SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 46). Trong hầu hết các trường hợp, các lập trình viên Python không sử dụng tiện ích này vì nó đưa một bộ tên không xác định vào trình thông dịch, có thể ẩn một số thứ bạn đã xác định

Lưu ý rằng nói chung, việc nhập SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 47 từ một mô-đun hoặc gói không được chấp nhận, vì nó thường gây ra mã khó đọc. Tuy nhiên dùng để tiết kiệm gõ trong các buổi tương tác cũng được

Nếu tên mô-đun được theo sau bởi SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 48, thì tên theo sau SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 48 sẽ được liên kết trực tiếp với mô-đun đã nhập

$ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 8

Điều này đang nhập mô-đun một cách hiệu quả giống như cách mà $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 10 sẽ thực hiện, với sự khác biệt duy nhất là nó có sẵn dưới dạng $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 11

Nó cũng có thể được sử dụng khi sử dụng $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 12 với tác dụng tương tự

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 2

Ghi chú

Vì lý do hiệu quả, mỗi mô-đun chỉ được nhập một lần cho mỗi phiên phiên dịch. Do đó, nếu bạn thay đổi các mô-đun của mình, bạn phải khởi động lại trình thông dịch – hoặc, nếu đó chỉ là một mô-đun mà bạn muốn kiểm tra tương tác, hãy sử dụng $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 13, e. g. $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 14

6. 1. 1. Thực thi các mô-đun dưới dạng tập lệnh¶

Khi bạn chạy một mô-đun Python với

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 5

mã trong mô-đun sẽ được thực thi, giống như khi bạn nhập mã, nhưng với >>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 8 được đặt thành $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 16. Điều đó có nghĩa là bằng cách thêm mã này vào cuối mô-đun của bạn

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 8

bạn có thể làm cho tệp có thể sử dụng được dưới dạng tập lệnh cũng như mô-đun có thể nhập, bởi vì mã phân tích cú pháp dòng lệnh chỉ chạy nếu mô-đun được thực thi dưới dạng tệp "chính"

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 30

Nếu mô-đun được nhập, mã không chạy

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 31

Điều này thường được sử dụng để cung cấp giao diện người dùng thuận tiện cho mô-đun hoặc cho mục đích thử nghiệm (chạy mô-đun dưới dạng tập lệnh thực thi bộ thử nghiệm)

6. 1. 2. Đường dẫn tìm kiếm mô-đun¶

Khi một mô-đun có tên $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 17 được nhập, trước tiên, trình thông dịch sẽ tìm kiếm một mô-đun tích hợp có tên đó. Các tên mô-đun này được liệt kê trong $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 18. Nếu không tìm thấy, nó sẽ tìm kiếm một tệp có tên $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 19 trong danh sách các thư mục được cung cấp bởi biến $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 30. $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 30 được khởi tạo từ những vị trí này

  • Thư mục chứa tập lệnh đầu vào (hoặc thư mục hiện tại khi không có tệp nào được chỉ định)

  • $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 32 (danh sách tên thư mục, có cùng cú pháp với biến hệ vỏ $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 33)

  • Mặc định phụ thuộc vào cài đặt (theo quy ước bao gồm một thư mục $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 34, được xử lý bởi mô-đun $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 35)

Thông tin chi tiết có tại Việc khởi tạo hệ thống. đường dẫn tìm kiếm mô-đun đường dẫn .

Ghi chú

Trên các hệ thống tệp hỗ trợ liên kết tượng trưng, ​​thư mục chứa tập lệnh đầu vào được tính sau khi liên kết tượng trưng được theo dõi. Nói cách khác, thư mục chứa liên kết tượng trưng không được thêm vào đường dẫn tìm kiếm mô-đun

Sau khi khởi tạo, các chương trình Python có thể sửa đổi $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 30. Thư mục chứa tập lệnh đang chạy được đặt ở đầu đường dẫn tìm kiếm, phía trước đường dẫn thư viện chuẩn. Điều này có nghĩa là các tập lệnh trong thư mục đó sẽ được tải thay vì các mô-đun cùng tên trong thư mục thư viện. Đây là một lỗi trừ khi dự định thay thế. Xem phần Mô-đun tiêu chuẩn để biết thêm thông tin.

6. 1. 3. Tệp Python “đã biên dịch”¶

Để tăng tốc độ tải các mô-đun, Python lưu trữ phiên bản đã biên dịch của từng mô-đun trong thư mục $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 37 dưới tên $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 38, trong đó phiên bản mã hóa định dạng của tệp đã biên dịch; . Ví dụ: trong bản phát hành CPython 3. 3 phiên bản thư rác được biên dịch. py sẽ được lưu vào bộ nhớ cache dưới dạng $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 39. Quy ước đặt tên này cho phép các mô-đun được biên dịch từ các bản phát hành khác nhau và các phiên bản Python khác nhau cùng tồn tại

Python kiểm tra ngày sửa đổi của nguồn so với phiên bản đã biên dịch để xem nó có lỗi thời và cần biên dịch lại không. Đây là một quá trình hoàn toàn tự động. Ngoài ra, các mô-đun được biên dịch độc lập với nền tảng, do đó, cùng một thư viện có thể được chia sẻ giữa các hệ thống có kiến ​​trúc khác nhau

Python không kiểm tra bộ đệm trong hai trường hợp. Đầu tiên, nó luôn biên dịch lại và không lưu trữ kết quả cho mô-đun được tải trực tiếp từ dòng lệnh. Thứ hai, nó không kiểm tra bộ đệm nếu không có mô-đun nguồn. Để hỗ trợ phân phối không phải nguồn (chỉ được biên dịch), mô-đun đã biên dịch phải nằm trong thư mục nguồn và không được có mô-đun nguồn

Một số lời khuyên cho các chuyên gia

  • Bạn có thể sử dụng công tắc $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 80 hoặc $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 81 trên lệnh Python để giảm kích thước của mô-đun đã biên dịch. Công tắc $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 80 loại bỏ câu lệnh khẳng định, công tắc $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 81 loại bỏ cả câu lệnh khẳng định và chuỗi __doc__. Vì một số chương trình có thể dựa vào việc có sẵn những thứ này, bạn chỉ nên sử dụng tùy chọn này nếu bạn biết mình đang làm gì. Các mô-đun “Được tối ưu hóa” có thẻ $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 84 và thường nhỏ hơn. Các bản phát hành trong tương lai có thể thay đổi tác động của việc tối ưu hóa

  • Một chương trình không chạy nhanh hơn khi nó được đọc từ tệp $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 85 so với khi nó được đọc từ tệp >>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 7;

  • Mô-đun $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 88 có thể tạo. pyc cho tất cả các mô-đun trong một thư mục

  • Có nhiều chi tiết hơn về quy trình này, bao gồm biểu đồ dòng chảy của các quyết định, trong PEP 3147

6. 2. Mô-đun tiêu chuẩn¶

Python đi kèm với một thư viện gồm các mô-đun tiêu chuẩn, được mô tả trong một tài liệu riêng, Tham khảo thư viện Python (“Tham khảo thư viện” sau đây). Một số mô-đun được tích hợp vào trình thông dịch; . Tập hợp các mô-đun như vậy là một tùy chọn cấu hình cũng phụ thuộc vào nền tảng cơ bản. Ví dụ: mô-đun $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 89 chỉ được cung cấp trên hệ thống Windows. Một mô-đun cụ thể đáng được chú ý. SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 20, được tích hợp trong mọi trình thông dịch Python. Các biến SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 21 và SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 22 xác định các chuỗi được sử dụng làm lời nhắc chính và phụ

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 32

Hai biến này chỉ được xác định nếu trình thông dịch ở chế độ tương tác

Biến $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 30 là danh sách các chuỗi xác định đường dẫn tìm kiếm của trình thông dịch cho các mô-đun. Nó được khởi tạo thành một đường dẫn mặc định được lấy từ biến môi trường $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 32 hoặc từ một mặc định tích hợp sẵn nếu $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 32 không được đặt. Bạn có thể sửa đổi nó bằng các thao tác danh sách tiêu chuẩn

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 33

6. 3. Hàm SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 26¶

Hàm tích hợp sẵn SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 26 được sử dụng để tìm ra tên mà một mô-đun xác định. Nó trả về một danh sách các chuỗi được sắp xếp

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 34

Không có đối số, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 26 liệt kê các tên bạn đã xác định hiện tại

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 35

Lưu ý rằng nó liệt kê tất cả các loại tên. biến, mô-đun, hàm, v.v.

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 26 không liệt kê tên của các hàm và biến tích hợp. Nếu bạn muốn có một danh sách những thứ đó, chúng được xác định trong mô-đun chuẩn SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 50

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 36

6. 4. Gói¶

Các gói là một cách cấu trúc không gian tên mô-đun của Python bằng cách sử dụng “tên mô-đun chấm”. Ví dụ: tên mô-đun SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 51 chỉ định mô-đun con có tên SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 52 trong gói có tên SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 53. Giống như việc sử dụng các mô-đun giúp tác giả của các mô-đun khác nhau không phải lo lắng về tên biến toàn cục của nhau, việc sử dụng tên mô-đun chấm giúp tác giả của các gói đa mô-đun như NumPy hoặc Gối không phải lo lắng về tên mô-đun của nhau

Giả sử bạn muốn thiết kế một tập hợp các mô-đun (một “gói”) để xử lý thống nhất các tệp âm thanh và dữ liệu âm thanh. Có nhiều định dạng tệp âm thanh khác nhau (ví dụ: thường được nhận dạng bằng phần mở rộng của chúng. SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 54, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 55, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 56), vì vậy bạn có thể cần tạo và duy trì bộ sưu tập mô-đun ngày càng tăng để chuyển đổi giữa các định dạng tệp khác nhau. Ngoài ra còn có nhiều thao tác khác nhau mà bạn có thể muốn thực hiện trên dữ liệu âm thanh (chẳng hạn như trộn, thêm tiếng vang, áp dụng chức năng bộ chỉnh âm, tạo hiệu ứng âm thanh nổi nhân tạo), vì vậy, ngoài ra, bạn sẽ viết một luồng mô-đun không bao giờ kết thúc để thực hiện . Đây là cấu trúc có thể có cho gói của bạn (được thể hiện dưới dạng hệ thống tệp phân cấp)

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 37

Khi nhập gói, Python tìm kiếm thông qua các thư mục trên $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 30 để tìm thư mục con của gói

Các tệp SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 58 được yêu cầu để Python xử lý các thư mục chứa tệp dưới dạng các gói. Điều này ngăn các thư mục có tên chung, chẳng hạn như SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 59, vô tình ẩn các mô-đun hợp lệ xảy ra sau này trên đường dẫn tìm kiếm mô-đun. Trong trường hợp đơn giản nhất, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 58 chỉ có thể là một tệp trống, nhưng nó cũng có thể thực thi mã khởi tạo cho gói hoặc đặt biến SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 81, được mô tả sau

Ví dụ: người dùng gói có thể nhập các mô-đun riêng lẻ từ gói

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 38

Điều này tải submodule SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 82. Nó phải được tham chiếu với tên đầy đủ của nó

SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 39

Một cách khác để nhập mô hình con là

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 0

Điều này cũng tải mô hình con SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 83 và làm cho nó khả dụng mà không cần tiền tố gói của nó, vì vậy nó có thể được sử dụng như sau

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 1

Tuy nhiên, một biến thể khác là nhập trực tiếp hàm hoặc biến mong muốn

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 2

Một lần nữa, điều này tải mô hình con SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 83, nhưng điều này làm cho chức năng của nó SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 85 có sẵn trực tiếp

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 3

Lưu ý rằng khi sử dụng SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 86, mục có thể là mô hình con (hoặc gói con) của gói hoặc một số tên khác được xác định trong gói, như hàm, lớp hoặc biến. Câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 43 trước tiên kiểm tra xem mục đó có được xác định trong gói hay không; . Nếu không tìm thấy nó, một ngoại lệ SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 88 sẽ được đưa ra

Ngược lại, khi sử dụng cú pháp như SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 89, mỗi mục trừ mục cuối cùng phải là một gói;

6. 4. 1. Nhập * Từ Gói¶

Bây giờ điều gì xảy ra khi người dùng viết SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 300? . Quá trình này có thể mất nhiều thời gian và việc nhập mô-đun con có thể có các tác dụng phụ không mong muốn chỉ xảy ra khi mô-đun con được nhập rõ ràng

Giải pháp duy nhất là tác giả gói cung cấp chỉ mục rõ ràng của gói. Câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 43 sử dụng quy ước sau. nếu mã SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 58 của một gói xác định một danh sách có tên là SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 81, thì nó được coi là danh sách các tên mô-đun sẽ được nhập khi gặp phải SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 304. Tác giả gói có nhiệm vụ cập nhật danh sách này khi phiên bản mới của gói được phát hành. Tác giả gói cũng có thể quyết định không hỗ trợ nó, nếu họ không thấy việc sử dụng để nhập * từ gói của họ. Ví dụ: tệp SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 305 có thể chứa đoạn mã sau

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 4

Điều này có nghĩa là SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 300 sẽ nhập ba mô hình con có tên của gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 307

Nếu SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 81 không được xác định, câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 300 không nhập tất cả các mô hình con từ gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 307 vào không gian tên hiện tại; . Điều này bao gồm bất kỳ tên nào được xác định (và các mô hình con được tải rõ ràng) bởi SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 58. Nó cũng bao gồm bất kỳ mô hình con nào của gói đã được tải rõ ràng bởi các câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 43 trước đó. Hãy xem xét mã này

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 5

Trong ví dụ này, các mô-đun SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 83 và SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 316 được nhập vào không gian tên hiện tại vì chúng được xác định trong gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 307 khi câu lệnh SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 318 được thực thi. (Điều này cũng hoạt động khi SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 81 được xác định. )

Mặc dù một số mô-đun nhất định được thiết kế để chỉ xuất các tên tuân theo các mẫu nhất định khi bạn sử dụng SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 320, nhưng đây vẫn được coi là thông lệ không tốt trong mã sản xuất

Hãy nhớ rằng, không có gì sai khi sử dụng SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 321. Trên thực tế, đây là ký hiệu được khuyến nghị trừ khi mô-đun nhập cần sử dụng các mô-đun con có cùng tên từ các gói khác nhau

6. 4. 2. Tham chiếu trong gói¶

Khi các gói được cấu trúc thành các gói con (như với gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 322 trong ví dụ), bạn có thể sử dụng nhập khẩu tuyệt đối để chỉ các mô-đun con của các gói anh chị em. Ví dụ: nếu mô-đun SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 323 cần sử dụng mô-đun SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 83 trong gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 307, thì có thể sử dụng SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 326

Bạn cũng có thể viết nhập khẩu tương đối, với mẫu báo cáo nhập khẩu SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 327. Các lần nhập này sử dụng các dấu chấm ở đầu để biểu thị các gói hiện tại và gói gốc liên quan đến quá trình nhập tương đối. Ví dụ, từ mô-đun SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 316, bạn có thể sử dụng

>>> fibo.fib(1000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 6

Lưu ý rằng nhập tương đối dựa trên tên của mô-đun hiện tại. Vì tên của mô-đun chính luôn là $ mkdir GreatKart && cd GreatKart # folder chứa code project $ pipenv install Django # Django==3.2 $ pipenv shell 16, nên các mô-đun được sử dụng làm mô-đun chính của ứng dụng Python phải luôn sử dụng nhập khẩu tuyệt đối

6. 4. 3. Gói trong nhiều thư mục¶

Các gói hỗ trợ thêm một thuộc tính đặc biệt, SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 330. Điều này được khởi tạo để trở thành một danh sách chứa tên của thư mục chứa gói SECRET_KEY= .. # SECRET_KEY trong file settings.py DATABASE_ENGINE=django.db.backends.mysql DATABASE_NAME=GreatKart DATABASE_USER=root DATABASE_PASSWORD=12345678 DATABASE_HOST=localhost DATABASE_PORT=3306 TIME_ZONE=Asia/Ho_Chi_Minh LANGUAGE_CODE=vi 58 trước khi mã trong tệp đó được thực thi. Biến này có thể được sửa đổi;

Mặc dù tính năng này thường không cần thiết, nhưng nó có thể được sử dụng để mở rộng tập hợp các mô-đun được tìm thấy trong một gói

chú thích

1

Trên thực tế, các định nghĩa hàm cũng là 'các câu lệnh' được 'thực thi';

Chủ đề