Giới thiệu
Khi chương trình cần nhiều đối số vị trí cùng kiểu dữ liệu (ví dụ: 2 số nguyên để thực hiện phép trừ), thay vì định nghĩa 2 đối số riêng biệt, ta có thể dùng nargs để yêu cầu chính xác N giá trị cùng kiểu.
Ví dụ: Trừ 2 số nguyên
import argparse
def get_args():
parser = argparse.ArgumentParser(
description='Ví dụ nargs',
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
# nargs=2: yêu cầu chính xác 2 giá trị kiểu int
parser.add_argument('numbers', metavar='int', nargs=2, type=int,
help='Hai số nguyên để trừ')
return parser.parse_args()
def main():
args = get_args()
num1, num2 = args.numbers
print(f"*** Trừ hai số - {num1} - {num2} = {num1 - num2}")
if __name__ == '__main__':
main()
Chạy thử
$ python test.py 30 10 *** Trừ hai số - 30 - 10 = 20 $ python test.py 10 30 *** Trừ hai số - 10 - 30 = -20 $ python test.py 10 10 30 usage: test.py [-h] int int test.py: error: unrecognized arguments: 30 $ python test.py usage: test.py [-h] int int test.py: error: the following arguments are required: int
Các giá trị thường dùng của nargs
| Giá trị | Ý nghĩa |
|---|---|
N (số nguyên) | Yêu cầu chính xác N đối số |
'?' | 0 hoặc 1 đối số (tùy chọn) |
'*' | 0 hoặc nhiều đối số (list) |
'+' | 1 hoặc nhiều đối số (list) |