Contents
Package Python là một tập các module có chung một mục đích, chức năng. Đường dẫn của package phải có 1 file đặc biệt __init__.py. (Kể từ Python 3.3, không yêu cầu __init__.py để định nghĩa đường dẫn package). Module Python là 1 file *.py.
Khi xử lí các project lớn gồm hàng trăm, hàng nghìn module => việc sử dụng package là quan trọng. Ví dụ: chúng ta có thể gom tất cả module xử lí database vào package database và user interface code đặt trong package ui.
– Built-in packages được đặt trong đường dẫn đã define. Ví dụ: /usr/lib/python3.7 trên Linux, c:\Users\Dell\AppData\Local\Programs\Python\Python37\Lib\site-packages trên Windows
– Third-party package được installed vào đường dẫn sau. Ví dụ: c:\Users\Dell\AppData\Local\Programs\Python\Python37\Lib trên Windows
Quản lý package Python
Chúng ta sử dụng Python package manager ‘pip’ để quản lí (install/uninstall) package Python
pip install arrow
Run command này trên cmd/terminal để install package arrow
pip uninstall arrow
Run command này trên cmd/terminal để uninstall package arrow
Package Python với empty __init__.py
Ví dụ 1: Tạo simple package
Chúng ta tạo simple package trong Python với cấu trúc folder như sau:
.
├── mymath
│ ├── __init__.py
│ └── mfuns.py
└── myprog.py
__init__.py
from .mfuns import mycube
Trong file __init__.py, chúng ta import function mycube từ module mfuncs.
Line of code này giúp chúng ta không cần chỉ định trên module khi gọi function mycube() từ 1 module (*.py) khác ngoài package mymath.
mfuns.py
def mycube(x): return x * x * x
Chúng ta định nghĩa hàm tính lập phương x
myprog.py
from mymath import mycube print(mycube(3))
Trong module myprog, chúng ta import function mycube, và chúng ta không cần chỉ định tên module để refer tới function mycube
Kết quả:
c:\Users\Dell>python myprog.py
27
Package Python không có __init__.py
Kể từ Python-3.3, chúng ta có thể định nghĩa package mà không cần có file __init__.py
Ví dụ 2: import package
Tạo package theo cấu trúc folder dưới đây
├── constants
│ ├── data.py
└── read.py
data.py
colours = ('yellow', 'blue', 'red', 'orange', 'brown') names = ('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')
Trong file data.py, định nghĩa 2 tuple
read.py
from constants.data import colours import constants.data as mydata print(colours) print(mydata.names)
Kết quả:
c:\Users\Dell>python read.py
(‘yellow’, ‘blue’, ‘red’, ‘orange’, ‘brown’)
(‘Jack’, ‘Jessica’, ‘Robert’, ‘Lucy’, ‘Tom’)
Package ‘arrow’
‘arrow’ package là third-party xử lí date time trong Python
c:\Users\Dell\AppData\Local\Programs\Python\Python37\Lib\site-packages\arrow>tree /f /a Folder PATH listing Volume serial number is C07F-8319 C:. | api.py | arrow.py | constants.py | factory.py | formatter.py | locales.py | parser.py | py.typed | util.py | _version.py | __init__.py | \---__pycache__ api.cpython-37.pyc arrow.cpython-37.pyc constants.cpython-37.pyc factory.cpython-37.pyc formatter.cpython-37.pyc locales.cpython-37.pyc parser.cpython-37.pyc util.cpython-37.pyc _version.cpython-37.pyc __init__.cpython-37.pyc
Package ‘arrow’ được install vào folder site-packages\arrow trên Windows. Library ‘arrow’ được install với command pip. Package ‘arrow’ gồm rất nhiều module trong đó.
Python subpackages
Chúng ta có thể tạo sub-package. Để access vào sub-package, chúng ta sử dụng toán tử .
Ví dụ 3: import từ sub-package
.
├── constants
│ ├── __init__.py
│ ├── data.py
│ └── numbers
│ ├── __init__.py
│ └── myintegers.py
└── read.py
constants/__init__.py
from .data import names
Trong file __init__.py, chúng ta import ‘names’ trong module ‘data.py’
constants/data.py
names = ('Jack', 'Jessica', 'Robert', 'Lucy', 'Tom')
Module ‘data’ trong package constants, định nghĩa tuple ‘name’
numbers/__init__.py
from .myintegers import myintegers
File __init__.py trong package ‘number’, import ‘myintegers’
numbers/myintegers.py
myintegers = (2, 3, 45, 6, 7, 8, 9)
Module ‘myintegers’ định nghĩa tuple 7 số nguyên. Tuple này sẽ được access từ script read.py
read.py
from constants import names from constants.numbers import myintegers print(names) print(myintegers)
Script read.py import ‘names’ từ package ‘constant’, và import ‘myintegers’ từ sub-package ‘constants.numbers’
Kết quả:
c:\Users\Dell\python read.py
(‘Jack’, ‘Jessica’, ‘Robert’, ‘Lucy’, ‘Tom’)
(2, 3, 45, 6, 7, 8, 9)
Leave a Reply
You must be logged in to post a comment.