Module trong python có thể được xem là một file chương trình python chứa mã python bao gồm các hàm, lớp hoặc biến. Nói cách khác, chúng ta có thể xem module python là một file được lưu với phần mở rộng (.py).
Các module trong Python giúp chúng ta code một cách linh hoạt hơn. Mỗi file sẽ có một chức năng cụ thể, được sắp xếp theo một nguyên tắc nào đó tùy vào mỗi lập trình viên.
Để sử dụng module này trong module khác thì ta phải sử dụng từ khóa import để gọi đến module cần sử dụng đó.
I. Tạo module trong Python
Trong ví dụ dưới đây mình sẽ tao một file có tên là file.py
. Trong file này sẽ chứa một đoạn mã Python với nội dung chính là hàm hiển thị thông báo.
1
2
3
|
#Hàm displayMsg sẽ hiển thị tên nhập vào. def displayMsg(name) print ( "Hi " + name); |
II. Gọi module trong Python
Để sử dụng các đoạn code trong module A vào trong module B thì ta sẽ phải imrport vào bằng một trong hai cách sau.
1. Sử dụng import
Lệnh import sẽ nhập tất cả các chức năng của module A vào trong module B.
1
|
import module |
Nếu bạn muốn import một lúc nhiều module thì hãy ngăn chúng bằng dấu phẩy.
1
|
import module1,module2,........ module n |
1
2
3
|
import file ; name = input ( "Nhập tên của bạn?" ) file .displayMsg(name) |
Chạy chương trình này bạn sẽ thu được kết quả như sau:
Nhập tên của bạn?Cường Hi Cường
2. Sử dụng from-import
Giả sử trong module A bạn định nghĩa 10 function, nhưng trong module B bạn chỉ muốn sử dụng 1 trong 10 funciton đó thôi thì sử dụng from .. import
. Vậy sự khác nhau giữa from
và from ... import
một bên sẽ gọi tất cả các function, còn một bên chỉ gọi một function nào đó thôi.
1
|
from < module - name> import <name 1 >, <name 2 >..,<name n> |
Ví dụ: Xem cách sử dụng from-import dưới đây.
1
2
3
4
5
6
7
|
#Đoạn code trong file calculation.py def summation(a,b): return a + b def multiplication(a,b): return a * b; def divide(a,b): return a / b; |
1
2
3
4
5
|
from calculation import summation #Nó sẽ import duy nhất hàm summation() trong file calculation.py a = int ( input ( "Enter the first number" )) b = int ( input ( "Enter the second number" )) print ( "Sum = " ,summation(a,b)) |
Chạy lên kết quả sẽ như sau:
Enter the first number10 Enter the second number20 Sum = 30
Lệnh from – import sử dụng trong trường hợp bạn biết chính xác tên function muốn sử dụng trong module. Nó sẽ không khiến chương trình nặng hơn, vì vậy cứ yên tâm mà sử dụng.
Trường hợp bạn muốn import tất cả các function thì sử dụng dấu sao *
.
1
|
from <module> import * |
III. Đổi tên module với AS trong Python
Nếu bạn muốn đổi tên module cho ngắn gọn và dễ hiểu thì có thể sử dụng từ khóa AS. Từ khóa này rất hữu ích vì giúp bạn tiết kiệm được thời gian nhập những module có tên quá dài, thay vao đó chỉ cần một cai tên thật đặc biệt.
Cú pháp như sau:
1
|
import <module - name> as <specific - name> |
Ví dụ: Thay đổi tên module calculation thành cal
1
2
3
4
5
|
#Tên của module calculation ở ví dụ trước sẽ đổi thành cal. import calculation as cal; a = int ( input ( "Enter a?" )); b = int ( input ( "Enter b?" )); print ( "Sum = " ,cal.summation(a,b)) |
IV. Hàm dir() trong Python
Hàm dir() có công dụng sắp xếp tên các hàm, biến mà bạn đã định nghĩa trong module đó.
Ví dụ: Xem những tên biến, hàm có sẵn trong module json.
1
2
3
4
5
|
import json List = dir (json) print ( List ) |
Kết quả:
['JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']
V. Hàm reload() trong Python
Trong Phython, khi bạn import một module thì nó sẽ thực hiện một lần duy nhất, cho dù bạn sử dụng đoạn code import bao nhiêu lần đi nữa. Tuy nhiên có một số trường hợp bạn muốn tải lại dữ liệu mới nhất của module đó thì có thể sử dụng hàm reload().
1
|
reload (<module - name>) |
Ví dụ: Tải lại module calculation đã được định nghĩa ở các ví dụ trước.
1
|
reload (calculation) |
VI. Phạm vi của biến trong module
Như tất cả các ngôn ngữ lập trình khác, chúng ta có hai dạng biến như sau:
- Biến toàn cục: là biến có thể sử dụng ở tất cả các vị trí trong chương trình chính, trừ trong hàm.
- Biến cục bộ: Là biến chỉ sử dụng được trong một phạm vi nhất định, ví dụ trong hàm.
Vậy khi bạn khai báo một biến trong module thì có thể sử dụng tai mọi vị trí trong module đó. Tuy nhiên trong hàm thì không thể gọi đến biến cục bộ đó.
Hãy xem ví dụ dưới đây, biến name đã được khai báo ở cấp ngoài cùng và trong hàm, đây là 2 biến hoàn toàn khác nhau.
1
2
3
4
5
6
7
|
# Đây là biến toàn cục name = "john" def print_name(name): #Biến này là biến cục bộ, giá trị của nó được truyền vào print ( "Hi" ,name) name = input ( "Enter the name?" ) print_name(name) |
Kết quả:
Hi David
VII. Cấu trúc module – package
Bây giờ hày tìm hiểu cách phân chia cấu trúc các package và module trong Python thế nào để chương trình tối ưu nhất.
Các package giúp lập trình viên có thể phân chia cấu trúc chương trình thành nhiều thư mục theo cấu trúc cây.
Thường thì sẽ có cấu trúc như sau: package -> sub-package -> module.
Để biết cách tạo package thì chúng ta sẽ làm một ví dụ như sau.
Ví dụ: Xây dựng cấu trúc package cho ứng dụng Employees.
Bước 1: Tao một thư mục Employees nằm trong thư mục home của ứng dụng.
Bước 2: Tao một module ITEmployees.py nằm trong thư mục /home/Employees.
1
2
3
|
def getITNames(): List = [ "John" , "David" , "Nick" , "Martin" ] return List ; |
Bước 3: Tương tự, hãy tạo thêm file BPOEmployees.py cũng năm trong thư mục đó, sau đó định nghĩa hàm getBPONames().
Bây giờ thư mục Employees đã có hai module. Để tao thư mục này thành một package thì bạn hãy tạo file __init__.py với nội dung là import hai module trên.
1
2
|
from ITEmployees import getITNames from BPOEmployees import getBPONames |
Bước 4: Để sử dụng module Employees thì chúng ta chỉ việc import nó vào. Hãy tạo một file Test.py nằm ngoài thư mục /home.
1
2
|
import Employees print (Employees.getNames()) |
Chạy lên kết quả sẽ như sau:
['John', 'David', 'Nick', 'Martin']
Trên là 4 bước để tạo một package trong Python đơn giản nhất.
Theo:freetuts.net