Hướng dẫn python call function in module from command line - hàm gọi python trong mô-đun từ dòng lệnh
Tôi đã viết một kịch bản Python nhỏ nhanh chóng có thể gọi được từ một dòng lệnh bash. Nó lấy tên của mô -đun, lớp và phương thức bạn muốn gọi và các tham số bạn muốn truyền. Tôi gọi nó là Pyrun và rời khỏi tiện ích mở rộng .Py và làm cho nó có thể thực thi bằng Chmod +X Pyrun để tôi có thể gọi nó nhanh như sau: Show
Lưu cái này trong một tập tin gọi là Pyrun
Dưới đây là một mô -đun mẫu để hiển thị cách nó hoạt động. Điều này được lưu trong một tệp gọi là pytest.py:
Hãy thử chạy các ví dụ sau:
Lưu ý ví dụ cuối cùng về việc thoát các dấu ngoặc đơn để truyền trong một tuple là tham số duy nhất cho phương thức thứ hai. Nếu bạn vượt qua quá ít tham số cho những gì phương thức cần bạn gặp lỗi. Nếu bạn vượt qua quá nhiều, nó bỏ qua các tính năng bổ sung. Mô -đun phải nằm trong thư mục làm việc hiện tại, đặt Pyrun có thể ở bất cứ đâu trên đường dẫn của bạn.
Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn. Vẫn chưa có tài khoản? Đăng ký tại đây. Hãy nói về việc tạo chức năng 1 trong Python.creating a 1 function in Python.Nhiều ngôn ngữ lập trình có khái niệm về hàm 1 (hoặc phương pháp 1), đóng vai trò là điểm nhập cảnh cho một chương trình. Python không có chức năng 1.does not have 1 functions.Python chạy tất cả mã trong các tập lệnh PythonChúng tôi có một kịch bản Python gọi là 5:
Khi chúng tôi chạy 5 từ dòng lệnh hệ thống của chúng tôi, Python sẽ chạy tất cả mã trong tệp này:runs all of the code in this file:Nhưng nếu chúng ta nhập tệp Python này thì sao? Python chạy tất cả mã trong các mô -đun PythonNếu chúng tôi nhập mô -đun 7 của mình, Python cũng chạy tất cả mã trong tệp của chúng tôi:runs all of the code in our file:Chúng tôi đang thấy "hey" được in ra vào thời gian nhập khẩu vì Python đã chạy chức năng 7 của chúng tôi (mà chúng tôi gọi ở cuối mô -đun của chúng tôi):Thật kỳ lạ khi thấy một cái gì đó được in ra khi chúng tôi chỉ nhập một mô -đun. Nhưng đó chỉ là những gì Python làm: Python chạy tất cả mã trong một mô -đun trên 9.Tệp 5 này thực sự không có nghĩa là được sử dụng làm mô -đun. Tệp này không có nghĩa là được nhập; Nó có nghĩa là được chạy như một kịch bản.run as a script.Sử dụng cùng một tệp python như cả mô -đun và tập lệnhĐiều gì sẽ xảy ra nếu chúng ta muốn tạo một tệp 1 có thể được nhập dưới dạng mô-đun và có thể được sử dụng làm tập lệnh Python (bằng cách chạy khỏi dòng lệnh)?imported as a module and could be used as a Python script (by being run from the command-line)?Phiên bản này của tệp 5 của chúng tôi có thể được chạy như một chương trình để in ra một lời chào ngẫu nhiên:
Nhưng nếu chúng tôi nhập nó dưới dạng mô -đun, nó không làm gì cả (ngoại trừ cho chúng tôi truy cập vào các chức năng và bất cứ điều gì khác có trong mô -đun đó):
Làm thế nào là điều này có thể trong Python? Kiểm tra class SomeClass: @staticmethod def First(): print "First" @staticmethod def Second(x): print(x) # for x1 in x: # print x1 @staticmethod def Third(x, y): print x print y class OtherClass: @staticmethod def Uno(): print("Uno") 3 của PythonHóa ra có một cách để hỏi, chúng ta có bị chạy khỏi dòng lệnh không. Hoặc nói một cách khác, mô -đun Python hiện tại của chúng tôi là điểm nhập cảnh vào quá trình Python của chúng tôi? Câu hỏi này có thể được hỏi bằng cách sử dụng tuyên bố 4.are we being run from the command-line. Or put another way, is our current Python module the entry point to our Python process? This question can be asked using the statement 4.Phiên bản 5 này hoạt động như một tập lệnh dòng lệnh và mô-đun có thể nhập:
Mỗi mô -đun có biến 6 và theo mặc định, biến 6 trong mỗi mô -đun là một chuỗi đại diện cho tên của mô -đun đó:a
string representing the name of that module:
Đó là trường hợp nếu chúng tôi nhập một mô -đun. Nhưng nếu chúng ta chạy tệp 5 đó từ dòng lệnh?Trong trường hợp đó, 6 sẽ không phải là tên của mô -đun đó. Thay vào đó, nó sẽ là 0. Đó là lý do tại sao chạy 5 cũng chạy chức năng 7:Khối mã này thực sự đặt câu hỏi là chúng ta là điểm nhập vào chương trình Python của chúng ta (chúng ta có bị chạy từ dòng lệnh thay vì được nhập dưới dạng mô-đun) không?are we the entry point to our Python program (are we being run from the command-line rather than being imported as a module)?
Nếu chúng ta đang được chạy từ dòng lệnh thì chúng ta sẽ chạy chức năng 7 của mình.Bạn có thể viết hàm #!/usr/bin/env python #make executable in bash chmod +x PyRun import sys import inspect import importlib import os if __name__ == "__main__": cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0])) if cmd_folder not in sys.path: sys.path.insert(0, cmd_folder) # get the second argument from the command line methodname = sys.argv[1] # split this into module, class and function name modulename, classname, funcname = methodname.split(".") # get pointers to the objects based on the string names themodule = importlib.import_module(modulename) theclass = getattr(themodule, classname) thefunc = getattr(theclass, funcname) # pass all the parameters from the third until the end of # what the function needs & ignore the rest args = inspect.getargspec(thefunc) z = len(args[0]) + 2 params=sys.argv[2:z] thefunc(*params) 1, nhưng bạn không cầnĐôi khi bạn có thể thấy các chương trình Python có chức năng 1: 0Python không biết về các chức năng 1, nhưng không có gì ngăn chúng tôi tạo ra một chức năng gọi là 1 mà chúng tôi chỉ gọi nếu chúng tôi được chạy khỏi dòng lệnh.making a
function called 1 that we only call if we're being run from the command-line.Hãy nhớ rằng class SomeClass: @staticmethod def First(): print "First" @staticmethod def Second(x): print(x) # for x1 in x: # print x1 @staticmethod def Third(x, y): print x print y class OtherClass: @staticmethod def Uno(): print("Uno") 3 incantationNếu bạn cần tạo một tệp python duy nhất có thể được sử dụng làm mô -đun (được nhập) và có thể được chạy như một tập lệnh python để làm gì đó, bạn có thể kiểm tra biến 6 trong mô -đun của bạn để xem nó có bằng chuỗi 0.used as a module (being imported) and can be run as a Python script to do something, you can check the variable 6 in your module to see whether it's equal to the string 0.
Làm thế nào để bạn gọi một chức năng cụ thể trong Python Terminal?Để sử dụng các hàm trong Python, bạn viết tên hàm (hoặc biến trỏ đến đối tượng hàm) theo sau là dấu ngoặc đơn (để gọi hàm).Nếu hàm đó chấp nhận các đối số (như hầu hết các hàm), thì bạn sẽ chuyển các đối số bên trong dấu ngoặc đơn khi bạn gọi hàm.write the function name (or the variable that points to the function object) followed by parentheses (to call the function). If that function accepts arguments (as most functions do), then you'll pass the arguments inside the parentheses as you call the function.
Làm thế nào để bạn gọi chức năng chính của một mô -đun trong Python?Đối với chức năng chính của Python, chúng ta phải xác định một hàm và sau đó sử dụng nếu __name__ == '__main__' để thực thi chức năng này.Nếu tệp nguồn Python được nhập dưới dạng mô -đun, trình thông dịch Python sẽ đặt giá trị __name__ thành tên mô -đun, do đó, điều kiện nếu điều kiện sẽ trả về sai và phương thức chính sẽ không được thực thi.define a function and then use if __name__ == '__main__' condition to execute this function. If the python source file is imported as module, python interpreter sets the __name__ value to module name, so the if condition will return false and main method will not be executed.
Làm thế nào để tôi chạy một def trong Python?Bốn bước để xác định một hàm trong Python là như sau: Sử dụng từ khóa def để khai báo chức năng và theo dõi tên này với tên chức năng.Thêm tham số vào hàm: Chúng nên nằm trong dấu ngoặc đơn của hàm.Kết thúc dòng của bạn bằng một dấu hai chấm.Use the keyword def to declare the function and follow this up with the function name. Add parameters to the function: they should be within the parentheses of the function. End your line with a colon. |