首页 > 解决方案 > 如何在 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')

标签: pythonarguments

解决方案


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

推荐阅读