如何从另一个函数访问argparse parse_args

2024-04-24 02:49:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下脚本:

#!/usr/bin/env python

import argparse
args = {}

def do_something():
    print 'from do_something ', args

def my_parse_args():
    parser = argparse.ArgumentParser(description='A demo script')
    parser.add_argument('arg1', help='an arg')
    args = vars(parser.parse_args())
    print 'from my_parse_args ', args

if __name__=="__main__":
    my_parse_args()
    do_something()

我试图从do\u something()函数访问参数。但是,我得到以下结论:

^{pr2}$

为什么args字典没有在my_parse_args()函数中设置?在


Tags: 函数fromenv脚本parserbinparsemy
1条回答
网友
1楼 · 发布于 2024-04-24 02:49:49

将函数的解析结果返回给其他函数:

def do_something(args):
    print 'from do_something ', args

def my_parse_args():
    parser = argparse.ArgumentParser(description='A demo script')
    parser.add_argument('arg1', help='an arg')
    return vars(parser.parse_args())

if __name__=="__main__":
    args = my_parse_args()
    do_something(args)

通常,您需要选择do_something()所需的参数并将其传入;这样,do_something()函数也可以被其他代码使用:

^{pr2}$

以及

if __name__=="__main__":
    args = my_parse_args()
    do_something(args['arg1'])

这里do_something()由命令行参数arg1值驱动,但是do_something()本身不必知道该值是如何获得的。您也可以从配置文件或数据库中加载它,或者在程序启动后使用提示从直接用户输入中加载它。在

相关问题 更多 >