Hướng dẫn python pass named arguments to script - python chuyển các đối số được đặt tên vào tập lệnh
Trong dòng lệnh, tôi có thể chuyển các đối số đến tệp python như: Show
Tôi có thể truy xuất 1 2 3 4 5 63 và 1 2 3 4 5 64 trong 1 2 3 4 5 65 như:
Tuy nhiên, tôi muốn gửi các đối số từ khóa đến tập lệnh Python và truy xuất chúng làm từ điển:
Sau đó, tôi muốn truy cập các đối số từ khóa như một từ điển trong Python:
Điều này có thể? Hỏi ngày 24 tháng 11 năm 2015 lúc 20:08Nov 24, 2015 at 20:08
3 Tôi nghĩ những gì bạn đang tìm kiếm là mô -đun Argparse https://docs.python.org/dev/l Library/argparse.html. Nó sẽ cho phép bạn sử dụng tùy chọn dòng lệnh và phân tích đối số. ví dụ. Giả sử những điều sau cho script.py
Bây giờ, nếu bạn cố gắng:
Bạn sẽ thấy:
như đầu ra. Tôi nghĩ rằng đây là những gì bạn đã theo đuổi. Nhưng đọc tài liệu, vì đây là một ví dụ rất được tưới về cách sử dụng Argparse. Chẳng hạnvery watered down example of how to use argparse. For instance the '3' and '4' I passed in are viewed as str's not as integers Đã trả lời ngày 24 tháng 11 năm 2015 lúc 20:13Nov 24, 2015 at 20:13
user1245262user1245262user1245262 6.4387 Huy hiệu vàng46 Huy hiệu bạc72 Huy hiệu đồng7 gold badges46 silver badges72 bronze badges 0 Thí dụ. Hãy xem xét các bài kiểm tra tập lệnh sau.Py - #!/Usr/bin/python nhập sys in 'Số lượng đối số:', Len (sys. .... Phân tích đối số dòng lệnh. Python cung cấp một mô-đun GetOpt giúp bạn phân tích các tùy chọn và đối số dòng lệnh. .... GetOpt. Phương pháp GetOpt. .... Ngoại lệ getopt. Getopterror ..Các đối số từ khóa là một trong những tính năng python thường có vẻ hơi kỳ lạ đối với những người chuyển sang Python từ nhiều ngôn ngữ lập trình khác. Nó không giúp mọi người học Python thường khám phá các tính năng khác nhau của các đối số từ khóa từ từ theo thời gian. Khi dạy Python, tôi đã thường muốn tôi có một bản tóm tắt về các tính năng liên quan đến đối số từ khóa khác nhau mà tôi có thể liên kết người học. Tôi hy vọng rằng bài viết này sẽ hoàn thành nhiệm vụ đó.
Chúng ta hãy xem xét các đối số từ khóa (còn được gọi là đối số có tên là). Đầu tiên, hãy để Lừa lấy chức năng Python này:
1 2
Thứ tự của những đối số này có vấn đề khi chúng được thông qua một vị trí:
Nhưng nó không quan trọng khi họ được truyền qua tên của họ:
Nhưng nó không quan trọng khi họ được truyền qua tên của họ:
Nhưng nó không quan trọng khi họ được truyền qua tên của họ: 6
Nhưng nó không quan trọng khi họ được truyền qua tên của họ:
Khi chúng ta sử dụng từ khóa/đối số được đặt tên, nó có tên quan trọng, không phải vị trí: import sys arg1 = sys.argv[1] arg2 = sys.argv[2] 8Vì vậy, không giống như nhiều ngôn ngữ lập trình khác, Python biết tên của các đối số mà chức năng của chúng tôi chấp nhận. Nếu chúng tôi yêu cầu trợ giúp về chức năng của mình, Python sẽ cho chúng tôi biết ba đối số của chúng tôi theo tên:
2Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa.
2Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa. Tại sao sử dụng từ khóa đối số? Khi gọi các chức năng trong Python, bạn sẽ thường phải chọn giữa việc sử dụng các đối số từ khóa hoặc đối số vị trí. Đối số từ khóa thường có thể được sử dụng để thực hiện các cuộc gọi chức năng rõ ràng hơn.
2Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa.
python script.py key1=value1 key2=value2 3 4Điều này lấy một đối tượng tệp 1 2 3 4 5 66 và 1 2 3 4 5 67 và ghi một phiên bản Gzipped của chuỗi vào tệp đầu ra. Mã này làm điều tương tự nhưng nó sử dụng các đối số từ khóa thay vì các đối số vị trí:
Lưu ý rằng sử dụng kiểu cuộc gọi từ khóa này cho thấy rõ hơn những gì mỗi trong ba đối số này đại diện.
2Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa.
Nhưng nó không quan trọng khi họ được truyền qua tên của họ:
8Vì vậy, không giống như nhiều ngôn ngữ lập trình khác, Python biết tên của các đối số mà chức năng của chúng tôi chấp nhận.Nếu chúng tôi yêu cầu trợ giúp về chức năng của mình, Python sẽ cho chúng tôi biết ba đối số của chúng tôi theo tên: 0
Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa.: If you haven’t seen that 1 23 syntax before, 1 26 captures all positional arguments given to the 1 27 function into a tuple which the 1 28 variable points to. Tại sao sử dụng từ khóa đối số?
8
0
Điều đó có thể có ích, nhưng với chức năng cụ thể, chúng tôi đã viết ở đây, nó rõ ràng nhất để sử dụng tất cả các đối số vị trí hoặc tất cả các đối số từ khóa. Đối số chỉ có từ khóa mà không có đối số vị tríĐiều gì sẽ xảy ra nếu bạn muốn chấp nhận các đối số chỉ từ khóa mà không chấp nhận các đối số vị trí không giới hạn? Nếu bạn muốn chấp nhận các đối số chỉ từ khóa và bạn không sử dụng 1 23 để chấp nhận bất kỳ số lượng đối số vị trí nào, bạn có thể sử dụng 1 23 mà không cần bất cứ điều gì sau đó. Ví dụ, ở đây, một phiên bản sửa đổi của chức năng Django từ ____105:
Không giống như việc triển khai 06 hiện tại của Django, phiên bản này không biết gọi 06 bằng cách chỉ định mọi đối số một cách vị trí. Các đối số 08, 09 và 10 phải được chỉ định bởi 11 của họ.
Giống như với các đối số vị trí không giới hạn, các đối số từ khóa này có thể được yêu cầu. Ở đây, một chức năng với bốn đối số chỉ cần từ khóa cần thiết:
Hàm này yêu cầu tất cả các đối số của nó được chỉ định bằng tên của họ:
Yêu cầu các đối số được đặt tên có thể thực hiện các cuộc gọi đến chức năng của chúng tôi rõ ràng hơn nhiều. Mục đích của cuộc gọi chức năng này:
Rõ ràng hơn nhiều so với cái này:
Rõ ràng hơn nhiều so với cái này: $ python script.py --arg1 3 --arg2 4 6Một lần nữa lưu ý rằng cú pháp này cũng chỉ hoạt động trong Python 3. Nắm bắt các đối số từ khóa tùy ý
1 2 8
Giống như với các đối số vị trí không giới hạn, các đối số từ khóa này có thể được yêu cầu. Ở đây, một chức năng với bốn đối số chỉ cần từ khóa cần thiết: 9
|
3 | 6 |
Không giống như việc triển khai
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
06 hiện tại của Django, phiên bản này không biết gọi import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
06 bằng cách chỉ định mọi đối số một cách vị trí. Các đối số import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
08, import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
09 và import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
10 phải được chỉ định bởi import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
11 của họ.1 2 3 4 5 6
3 | 8 |
Giống như với các đối số vị trí không giới hạn, các đối số từ khóa này có thể được yêu cầu. Ở đây, một chức năng với bốn đối số chỉ cần từ khóa cần thiết:
3 | 9 |
0: We’re also using the $ python script.py --arg1 3 --arg2 4
1 23 operator here for the same kind of capturing and unpacking of positional arguments.
Hàm này yêu cầu tất cả các đối số của nó được chỉ định bằng tên của họ:
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--arg1')
parser.add_argument('--arg2')
args = parser.parse_args()
print args.arg1
print args.arg2
my_dict = {'arg1': args.arg1, 'arg2': args.arg2}
print my_dict
3 $ python script.py --arg1 3 --arg2 4
2
Điều gì sẽ xảy ra nếu bạn muốn viết một hàm ghi lại một số lượng đối số từ khóa tùy ý? | Ví dụ: phương thức định dạng chuỗi chấp nhận bất kỳ đối số từ khóa nào bạn đưa ra: |
1 2
Điều gì sẽ xảy ra nếu bạn muốn viết một hàm ghi lại một số lượng đối số từ khóa tùy ý? | Ví dụ: phương thức định dạng chuỗi chấp nhận bất kỳ đối số từ khóa nào bạn đưa ra: |
1
2
$ python script.py --arg1 3 --arg2 4
8Làm thế nào bạn có thể viết một chức năng như vậy?
Python cho phép các chức năng nắm bắt bất kỳ đối số từ khóa nào được cung cấp cho chúng bằng toán tử
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
12 khi xác định chức năng:3
4
{'arg1': '3', 'arg2': '4'}
0Toán tử import sys arg1 = sys.argv[1] arg2 = sys.argv[2] 12 đó sẽ cho phép chức năng import sys arg1 = sys.argv[1] arg2 = sys.argv[2] 14 của chúng tôi chấp nhận bất kỳ số lượng đối số từ khóa nào. Các đối số đã cho sẽ được lưu trữ trong một từ điển gọi là import sys arg1 = sys.argv[1] arg2 = sys.argv[2] 15.
Ở đây, một ví dụ sử dụng chức năng của chúng tôi:level up your Python skills and get practice using Python-specific features, like keyword arguments, sign up for Python Morsels below.