8

コマンドライン引数を解析するために、python で argparse を使用しています。

parser = ArgumentParser()
parser.add_argument("--a")
parser.add_argument("--b")
parser.add_argument("--c")
args = parser.parse_args()

aここで、 、b、およびを使用して計算を行いたいと思いますc。とはいえ、ずっと書くのはめんどくさいと思いますargs.a + args.b + args.c

したがって、これらの変数を抽出しています。

a, b, c = [args.a, args.b, args.c]

私が書くことができるようにa + b + c

それを行うよりエレガントな方法はありますか?

多くの引数を追加すると、手動での抽出は非常に面倒になり、エラーが発生しやすくなります。

4

2 に答える 2

9

それらをグローバルとして使用したい場合は、次のことができます。

globals().update(vars(args))

関数内にいて、それらをその関数のローカル変数として使用したい場合は、Python2.xで次のように実行できます。

def foo(args):
   locals().update(vars(args))       
   print a, b, c
   return
   exec ""  # forces Python to use a dict for all local vars
            # does not need to ever be executed!  but assigning
            # to locals() won't work otherwise.

このトリックはexec、ステートメントではないPython 3では機能しません。また、JythonやIronPythonなどの他のPythonバリアントでは機能しない可能性があります。

ただし、全体として、オブジェクトには短い名前をargs使用するか、クリップボードを使用することをお勧めします。:-)

于 2011-11-29T05:35:14.757 に答える
0

を呼び出すことで、ローカル スコープに何かを追加できますlocals()。現在利用可能なスコープを表す辞書を返します。それに値を割り当てることもできます。これlocals()['a'] = 12によりa、値が 12 のローカル スコープになります。

于 2011-11-29T05:31:30.657 に答える