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

Định vị và thực thi các mô-đun Python (runpy)

Tùy chọn –m của tùy chọn dòng lệnh tìm kiếm một mô-đun nhất định và thực thi nó dưới dạng mô-đun __main__. Cơ chế này được hỗ trợ nội bộ bởi mô-đun runpy từ mô-đun tiêu chuẩn của Python, cho phép các tập lệnh được định vị bằng cách sử dụng không gian tên mô-đun Python chứ không phải hệ thống tệp.

Mô-đun này xác định hai chức năng

run_module ()

Hàm này thực thi mã của mô-đun được chỉ định và trả về từ điển toàn cầu mô-đun kết quả.

Đối số mod_name phải là một tên mô-đun tuyệt đối. Nếu tên mô-đun đề cập đến một gói chứ không phải một mô-đun bình thường, thì gói đó được nhập và mô-đun con __main__ trong gói đó sau đó được thực thi và kết quả là từ điển toàn cầu mô-đun được trả về.

Các biến toàn cục đặc biệt __name__, __spec__, __file__, __cached__, __loader__ và __package__ được đặt trong từ điển toàn cầu trước khi mã mô-đun được thực thi.

__name__ được đặt thành mod_name + '.__ main__' nếu mô-đun được đặt tên là một gói và đối số mod_name nếu không.

__file__, __cached__, __loader__ và __package__ được đặt như bình thường dựa trên thông số kỹ thuật của mô-đun.

run_path ()

Hàm này thực thi mã trong tệp theo đường dẫn đã cho và trả về từ điển toàn cầu mô-đun kết quả. Đường dẫn được cung cấp có thể tham chiếu đến tệp nguồn Python, tệp bytecode đã biên dịch hoặc mục nhập sys.path hợp lệ chứa mô-đun __main__ (ví dụ:tệp zip chứa tệp __main__.py cấp cao nhất).

Các biến toàn cục đặc biệt __name__, __spec__, __file__, __cached__, __loader__ và __package__ được đặt trong từ điển toàn cầu trước khi mã mô-đun được thực thi.

__name__ được đặt thành run_name nếu đối số tùy chọn này không phải là Không có và nếu không thì thành ''.

Ví dụ

Lưu tập lệnh sau dưới dạng runpyeample.py

 #runpy exampledef add (x, y):return x + ydef main ():x, y =10,20 print (add (x, y)) returnnif __name __ =='__ main__':main ()  

Quy trình thông thường để thực hiện ví dụ trên như sau

>>> nhập runpyexample dưới dạng rp>
>> rp.main () 30>>> 

Tuy nhiên, bây giờ chúng tôi sử dụng mô-đun runpy để thực thi nó mà không thực sự nhập nó.

>>> nhập runpy>>> runpy.run_module ('runpyexample', run_name ='__ main __') 30 

Bạn cũng có thể sử dụng hàm run_path ().

>>> runpy.run_path ('runpyexample.py', run_name ='__ main __') 30 

Như đã nói trước đó, runpy hỗ trợ chuyển đổi –m của dòng lệnh Python.

 E:\ python37> python -m runpyexample30