簡體   English   中英

如何在 Python 中解析函數的參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM