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 回答