Computer >> Máy Tính >  >> Lập trình >> Python

Việc triển khai nhập bằng Python (importlib)

Gói importlib cung cấp việc triển khai câu lệnh nhập bằng mã nguồn Python có thể di động tới bất kỳ trình thông dịch Python nào. Điều này cũng cung cấp một triển khai dễ hiểu hơn một triển khai được triển khai bằng ngôn ngữ lập trình không phải Python.

Gói này cũng hiển thị các thành phần để triển khai nhập, giúp người dùng dễ dàng tạo đối tượng tùy chỉnh của riêng họ (được gọi là trình nhập) để tham gia vào quá trình nhập.

Gói importlib có một hàm quan trọng có tên là import_module ()

import_module ():

Chức năng này nhập một mô-đun theo chương trình. Tên của mô-đun là tham số đầu tiên của hàm. Tham số thứ hai tùy chọn chỉ định tên gói nếu có.

validate_caches ():

Chức năng này làm mất hiệu lực bộ nhớ đệm bên trong của công cụ tìm kiếm. Hàm này sẽ được gọi nếu bất kỳ mô-đun nào được tạo / cài đặt trong khi chương trình của bạn đang chạy để đảm bảo tất cả những người tìm kiếm sẽ nhận thấy sự tồn tại của mô-đun mới.

tải lại ():

Hàm này tải lại một mô-đun đã nhập trước đó. Điều này hữu ích nếu bạn đã chỉnh sửa tệp nguồn mô-đun bằng trình chỉnh sửa bên ngoài và muốn dùng thử phiên bản mới mà không cần rời khỏi trình thông dịch Python.

Ví dụ:

Tạo hai tập lệnh Python có tên module1.py và module2.py có cùng mã như bên dưới:

#module1
def main():
   print ('module imported', __name__)
   return
if __name__=='__main__':
   main()

Bây giờ chúng tôi nhập động các mô-đun này bằng cách sử dụng gói importlib.

>>> import importlib
>>> mod=importlib.import_module('module1')
>>> mod.__name__
'module1'
>>> mod=importlib.import_module('module2')
>>> mod.__name__
'module2'
>>> mod.main()
module imported module2
>>>

Gói importlib chứa các mô-đun con sau:

importlib.abc

Mô-đun này chứa tất cả các lớp cơ sở trừu tượng cốt lõi được sử dụng bởi nhập. Một số lớp con của các lớp cơ sở trừu tượng cốt lõi cũng được cung cấp để giúp triển khai các ABC cốt lõi

importlib.resources

Mô-đun này thúc đẩy hệ thống nhập của Python để cung cấp quyền truy cập vào các tài nguyên trong các gói.

importlib.machinery

Mô-đun này chứa các đối tượng khác nhau giúp nhập mô-đun tìm và tải.

importlib.util

Mô-đun này có mã tiện ích cho nhà nhập khẩu. Nó chứa các đối tượng khác nhau giúp xây dựng một nhà nhập khẩu. Các chức năng quan trọng sau được định nghĩa trong nó.

find_spec ():

Hàm này tìm các thông số kỹ thuật cho một mô-đun, liên quan đến tên gói được chỉ định. Nếu tên dành cho mô-đun con (chứa một dấu chấm), thì mô-đun mẹ sẽ được nhập tự động. Tên và gói hoạt động giống như đối với import_module ().

module_from_spec (spec)

Tạo một mô-đun mới dựa trên spec và spec.loader.create_module.

Ví dụ:

import importlib.util
def check_module(mod):
   spec = importlib.util.find_spec(mod)
   if spec is None:
      print('Module: {} not found'.format(mod))
      return None
   else:
      print('Module: {} can be imported!'.format(mod))
      return spec
   def import_module(spec):
      mod = importlib.util.module_from_spec(spec)
      spec.loader.exec_module(mod)
      return mod
if __name__ == '__main__':
   spec = check_module('notamodule')
   spec = check_module('module1')
   if spec:
      mod = import_module(spec)
      mod.main()

Đầu ra:

Module: notamodule not found
Module: module1 can be imported!
module imported module1