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 __') 30Bạn cũng có thể sử dụng hàm run_path ().
>>> runpy.run_path ('runpyexample.py', run_name ='__ main __') 30Như đã nói trước đó, runpy hỗ trợ chuyển đổi –m của dòng lệnh Python.
E:\ python37> python -m runpyexample30