当前位置 博文首页 > python 动态变量名赋值_weixin_39849387的博客:python如何动态

    python 动态变量名赋值_weixin_39849387的博客:python如何动态

    作者:[db:作者] 时间:2021-07-30 18:09

    对于单个函数:

    def dongtai(**dic):

    for i in dic.keys():

    locals()[i]=dic[i]

    print locals()#locals()是当前作用域内的变量,属性,方法等组成的字典,可以通过这个看到当前函数内的有效变量

    测试 :

    >>> dongtai(a="1",b="2",c="3")

    {'i': 'b', 'a': '1', 'c': '3', 'b': '2', 'dic': {'a': '1', 'c': '3', 'b': '2'}} 可以看到成功了,在dongtai()函数体内可以用 print a,b,c来查看有没有赋值。

    对于class,推荐使用setattr()方法

    class test(object) :

    def __init__(self,**dic):

    self.name="jon"

    for i in dic.keys() :

    setattr(self,i,dic[i]) #第一个参数是对象,这里的self其实就是test.第二个参数是变量名,第三个是变量值

    测试:

    >>>t=test(a="1",b="2",c="3")

    >>>print t.a,t.b,t.c

    1 2 3

    也成功了,注意,class里面不能使用locals()来赋值因为locals()是__init__函数的,而我们需要的是test类的成员,也就是self.a,self.b,self.c……,比__init__还要高一级的。

    还有一种方法是通过globals()来做的,个人感觉太麻烦,就不去研究了。

    cs