簡體   English   中英

如何從另一個函數訪問argparse parse_args

[英]How to access argparse parse_args from another function

我有以下腳本:

#!/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()函數訪問args。 但是,我得到以下信息:

python demo.py example
from my_parse_args  {'arg1': 'example'}
from do_something  {}

為什么在my_parse_args()函數中未設置args詞典?

您將從函數返回解析結果,因此可以將其傳遞給其他函數:

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()本身不必知道如何獲取該值。 您也可以從配置文件或數據庫中加載該程序,也可以在程序啟動后從帶有提示的直接用戶輸入中加載它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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