python如何动态改变变量名_python 动态变量名赋值

对于单个函数:

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()来做的,个人感觉太麻烦,就不去研究了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值