如何从其他函数访问argparse的parse_args
我有一个这样的脚本:
#!/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_something() 这个函数里获取一些参数。但是,我得到了以下内容:
python demo.py example
from my_parse_args {'arg1': 'example'}
from do_something {}
为什么在 my_parse_args() 这个函数里,args 字典没有被设置呢?
1 个回答
4
你需要从你的函数中返回解析的结果,这样你就可以把它传递给其他地方使用:
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()
函数也可以被其他代码使用:
def do_something(foo):
print 'from do_something', foo
还有
if __name__=="__main__":
args = my_parse_args()
do_something(args['arg1'])
在这里,do_something()
是通过命令行参数arg1
的值来驱动的,但do_something()
本身并不需要知道这个值是怎么得到的。你也可以从配置文件、数据库,或者在程序启动后直接通过用户输入来加载这个值。