python2动态变量的实现

刚学python不久,最近用python编写公司服务器的一个备份脚本,期间遇到动态变量的问题,然后各种baidu,google。终于发现了两个重要的变量locals()和globals()。

>>> locals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
>>> a=1
>>> b={}
>>> locals()
{'a': 1, 'b': {}, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': None}
>>> def func():
...         print "func_locals(): %s" % locals()
... 
>>> func()
func_locals(): {}

从以上代码我们发现locals()其实就是一个为dict类型的变量,每当我们增加了一个变量之后,locals()就会增加一个key和对应的value,大家一定发现了通过def定义的函数返回的locals()是一个空的dict,也就是说,locals()中保存的变量只是作用在本地域,无法去动态定义全局变量,这时就轮到globals()上场了,使用的方法和locals()一样。

>>> def func2():
...         names=globals()
...         print "func_globals(): %s" % globals()
... 
>>> func2()
func_globals(): {'a': 1, 'func2': <function func2 at 0x7f71fb69f668>, 'b': {}, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'func': <function func at 0x7f71fb69f5f0>, '__name__': '__main__', '__doc__': None}

>>> locals()
{'a': 1, 'func2': <function func2 at 0x7f71fb69f668>, 'b': {}, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'func': <function func at 0x7f71fb69f5f0>, '__name__': '__main__', '__doc__': None}

看到效果了吗?下面是一个动态变量赋值的下例子

>>> names = locals()
>>> for i in xrange(1, 101):
...       names['x%s' % i] = i
...
>>> x1
1
>>> x2
2
>>> x100
100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值