如何在Python中解析函数的参数?

如何在Python中解析函数的参数?,python,arguments,Python,Arguments,我一直在尝试理解有关如何使用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_a

我一直在尝试理解有关如何使用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')

以下是处于工作状态

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
,直到您停止执行。

在我看来
为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')

因此:


这是
如果uuuu name\uuuuu='\uuuuuu main\uuuuu':
,您的方法是错误的。解析应该在
if
块内完成。谢谢!很抱歉,我试图用一些示例代码来说明我想要的东西。这正是我想要的!
$ python foo.py --a 1
2