CodeGym /Các khóa học /Python SELF VI /Nhập các module

Nhập các module

Python SELF VI
Mức độ , Bài học
Có sẵn

1.1 Làm quen với các module

Module trong Python là file có phần mở rộng .py, chứa mã. Các module cho phép chia mã lớn thành các phần nhỏ hơn, dễ quản lý hơn. Mỗi module có thể chứa hàm, lớp và biến, cũng như thực hiện một số mã khi được nhập.

Ví dụ về module đơn giản

Tạo module mymodule.py:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

Bây giờ module này có thể được nhập và sử dụng trong file khác.

1.2 Nhập các module

Python cung cấp một số cách để nhập các module. Hãy xem từng cách một.

Nhập toàn bộ module

Cú pháp chung của thao tác này có dạng:


import module

Phương pháp này nhập toàn bộ module, và bạn có thể sử dụng các hàm và biến của nó bằng cách chỉ định tên module.


import module

print(module.greet("Alice"))  # Xuất: Hello, Alice!
print(module.pi)  # Xuất: 3.14159
        

Chúng ta đã từng làm điều này với module math, nhớ không?


import math

print(math.ceil(13 / 7))  # làm tròn lên
print(math.floor(13 / 7))  # làm tròn xuống
        

Nhập các phần tử cụ thể từ module

Bạn có thể nhập không phải tất cả mọi thứ trong module, mà chỉ một số phần tử cụ thể. Cú pháp chung của thao tác này có dạng:


from module import func, var

Phương pháp này chỉ nhập các hàm, lớp hoặc biến nhất định từ module, cho phép sử dụng chúng mà không cần chỉ định tên module.


from mymodule import greet, pi

print(greet("Bob"))  # Xuất: Hello, Bob!
print(pi)  # Xuất: 3.14159
        

Nhập module với bí danh

Cú pháp chung của thao tác này có dạng:


import module as alias

Phương pháp này cho phép nhập module và gán cho nó một tên khác, điều này có thể hữu ích để giảm độ dài của tên module hoặc để giải quyết xung đột tên.


import mymodule as mm

print(mm.greet("Charlie"))  # Xuất: Hello, Charlie!
print(mm.pi)  # Xuất: 3.14159
        

Nhập tất cả phần tử từ module

Cú pháp chung của thao tác này có dạng:


from module import *

Phương pháp này nhập tất cả hàm, lớp và biến từ module, cho phép sử dụng chúng mà không cần chỉ định tên module. Tuy nhiên, việc sử dụng phương pháp này không được khuyến nghị, vì nó có thể gây xung đột tên và làm khó đọc mã.


from mymodule import *

print(greet("Dave"))  # Xuất: Hello, Dave!
print(pi)  # Xuất: 3.14159
        

1.3 Bên dưới quá trình nhập

Thứ tự tìm kiếm module

Khi bạn nhập module, Python tìm kiếm nó theo một thứ tự nhất định:

  1. Thư mục hiện tại: Python đầu tiên tìm kiếm module trong thư mục hiện tại, nơi đã chạy kịch bản.
  2. Biến môi trường PYTHONPATH: Nếu module không tìm thấy trong thư mục hiện tại, Python tìm kiếm nó trong các thư mục được chỉ định trong biến môi trường PYTHONPATH.
  3. Các thư mục tiêu chuẩn: Nếu module vẫn chưa tìm thấy, Python tìm kiếm nó trong các thư mục tiêu chuẩn, chẳng hạn như các thư mục được chỉ định trong sys.path.

Ví dụ:


import sys

for path in sys.path:
    print(path)
        

Nhập cục bộ và nhập toàn cầu

Việc nhập module có thể thực hiện cả ở cấp độ toàn cầu (ở đầu file), và ở cấp độ cục bộ (trong hàm hoặc phương thức).

Nhập toàn cầu

Nhập toàn cầu thực hiện ở đầu file và làm cho module được nhập khả dụng trong toàn bộ file.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

Nhập cục bộ

Nhập cục bộ thực hiện trong hàm hoặc phương thức và làm cho module được nhập chỉ khả dụng trong hàm hoặc phương thức đó.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

Nhập cục bộ có thể hữu ích để giảm thời gian tải module hoặc để ngăn chặn xung đột tên.

1.4 Nhập động

Nhập động cho phép nhập các module trong thời gian thực hiện chương trình. Điều này có thể hữu ích khi cần nhập module dựa trên đầu vào của người dùng hoặc các điều kiện động khác.

Cú pháp chung của thao tác này có dạng:


module = __import__("module")

Hãy thử nhập module math theo cách này.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # Xuất: 4.0

Làm việc với mã tiếp theo tương tự như sử dụng import as, khi module math được gán bí danh module.

1.5 Truy cập thuộc tính của module bằng cách sử dụng hàm getattr

Hàm getattr cho phép truy xuất động các thuộc tính từ module (hoặc bất kỳ đối tượng nào). Nó có thể hữu ích trong trường hợp, khi tên thuộc tính không được biết trước hoặc có thể thay đổi trong thời gian thực hiện chương trình.

Cú pháp của hàm getattr:


getattr(object, name, default = None)

Nơi object — là đối tượng, từ đó cần truy xuất thuộc tính, name — chuỗi chứa tên thuộc tính, còn default — giá trị được trả về trong trường hợp thuộc tính với tên được chỉ định không tồn tại. Giá trị mặc định cho tham số defaultNone.

Ví dụ sử dụng hàm getattr:


import math

# Truy xuất thuộc tính sqrt từ module math
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # Xuất: 5.0

# Cố gắng truy xuất thuộc tính không tồn tại, trả về giá trị mặc định
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # Xuất: default_value
        

Trong ví dụ này, chúng ta sử dụng hàm getattr để truy xuất hàm sqrt từ module math, sau đó gọi hàm này để tính toán căn bậc hai của số 25. Trong trường hợp nếu thuộc tính với tên được chỉ định không tồn tại, giá trị mặc định default_value được trả về.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION