如何创建一个函数,该函数将使用包含给定参数名称的名称创建全局(并为其赋值)?

时间:2011-10-12 08:12:18

标签: python global

我正在使用Python并且我正在尝试创建一个函数,该函数将查看作为参数给出的对象的名称,并且(除其他外)创建一些包含此名称的全局变量, 例如:

object1=someclass(args,kwds) #the object is an instance of a class that is given a certain name (e.g.object1)
def somefunc(some_argument):
   global tau_some_argument
   global ron_some_argument    #e.t.c. for other variables (I also would like to assign some variables etc)
   tau_some_argument=some_value1
   ron_some_argument=some_value2
   print ron_some_argument
   print tau_some_argument

现在,如果我调用此函数,我想要发生的事情如下: 当我打电话

 somefunc(object1)

我希望它创建一些名为tau_object1,ron_object1的全局变量并为它们赋值(print语句无关紧要),类似的,如果我调用

somefunc(object2)

其中object2是类的另一个实例,我希望它创建全局变量:tau_object2,ron_object2,此时函数只是创建名为tau_some_argument的全局变量(从代码中可以看出)。

现在我在某处读到python对象的名称是不可变的,除非它们是一个类或函数,所以我不知道怎么做,从阅读中我觉得我可能需要使用元类但这感觉就像是一种过于复杂的方式来做一些相对容易的事情。

提前致谢。

2 个答案:

答案 0 :(得分:3)

这听起来像个糟糕的主意......

def func(prefix):
    g = globals()
    g[prefix + '_tomato'] = 123
    g[prefix + '_broccoli'] = 456

无论你在做什么,它都可以用字典,数组和其他对象完成,其方式与上述方法一样不易碎。

答案 1 :(得分:0)

我对python不太确定,但你不能只声明一个全局数组,只是创建一个由对象名称索引的对象作为字符串吗?

tau_some_argument['object1'] = some_value1
ron_some_argument['object1'] = some_value2