[英]How to parse arguments to a function in Python?
我一直在嘗試了解有關如何使用 argparse 解析 Python 中的參數的教程。 這是我傳遞命令行輸入以便運行函數的方式嗎?
import argparse
parser = argparse.ArgumentParser(description='A test')
parser.add_argument("--a", default=1, help="Test variable")
args = parser.parse_args()
def foo():
command_line_argument = args.a
bar = 2*args.a
print(bar)
return
if "__name__" == "__main__"
try:
while True:
foo()
except KeyboardInterrupt:
print('User has exited the program')
while True
對我來說看起來很奇怪——你是在要求讀者繼續提交輸入,直到他們按下 CTRL+C 嗎? 因為如果是這樣,則使用 argparse 是錯誤的:請參閱 獲取用戶輸入
如果您打算使用單個參數,那么我會將解析器內容移到 main 中,這是腳本作為程序運行而不是導入時執行的內容。
另外,我會將參數傳遞給foo
而不是 args 塊。
最后,我猜你希望收到一個數字,所以你需要type=int
或類似的。
import argparse
def foo(a):
bar = 2*a
print(bar)
return
if __name__ == "__main__":
try:
# set it up
parser = argparse.ArgumentParser(description='A test')
parser.add_argument("--a", type=int, default=1, help="Test variable")
# get it
args = parser.parse_args()
a = args.a
# use it
foo(a)
except KeyboardInterrupt:
print('User has exited the program')
所以:
$ python foo.py --a 1
2
下面是工作狀態
import argparse
parser = argparse.ArgumentParser(description='A test')
parser.add_argument("--a", default=1, help="Test variable", type=int)
args = parser.parse_args()
def foo():
command_line_argument = args.a
bar = 2*args.a
print(bar)
return
if __name__ == "__main__":
try:
while True:
foo()
except KeyboardInterrupt:
print('User has exited the program')
如果你運行python your-filename.py --a=2
它會打印4
直到你停止執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.