1

次のことができる関数を作成する必要があります。

  1. 入力引数を検査し、入力の数とその値を取得します
  2. ループを作成し、各入力名の後に文字列 '_in' を追加します
  3. 新しい入力をグローバルにする
  4. 新しい入力に古い値を割り当てる

inspect.getargspec() を使用しようとしましたが、これは関数の外で呼び出す必要があるようです。提案はありますか?

疑似コードは次のとおりです。 この関数を定義します。

def set_global(a1, a2, a3, .... an):
    #the number of arguments is not fixed and we need to detect that
    for old_input in total input:
         new_input_name=str(old_input.name)+'_in'
         global new_input_name 
         new_input_name = old_input.value
4

2 に答える 2

2
def foo(*args, **kwargs):
    print "number of fixed args: %d" % len(args)
    print "number of keyword args: %d" % len(kwargs)
    print "keyword argument names: %s" % str(kwargs.keys())

これを適用してglobals()、必要なことを行うことができます。

def set_globals(**kwargs):
    for argname in kwargs:
        globals()['%s_in' % argname] = kwargs[argname]

したがって、Python 対話型インタープリターから上記の関数を使用すると、次のようになります。

>>> set_globals(foo='x', bar='y')
>>> foo_in
'x'
>>> bar_in
'y'
于 2013-01-16T16:29:57.450 に答える
1

私は本当にあなたが機能を探していると思いますglobals

a = 1
globals()['a'] = 2
print a  #2
globals()['a_in'] = 2
print a_in  #2

これを関数に入れることができます:

def do_something_with_globals(**kwargs):
    for k,v in kwargs.items():
        globals()[k+'_in'] = v

これは次のように呼び出すことができます:

a = 1
b = 2
do_something_with_globals(a=a,b=b)
print a_in
print b_in

でも、正直、これでいいとは思いません…。

于 2013-01-16T16:30:20.150 に答える