Python变量的动态创建

Python变量的动态创建

动态地创建变量可以使用 globals() 和 locals() 来实现。
这两个对象以字典的形式分别保存着系统的静态变量和局部变量。
所以只要将要创建的变量加入这两个字典中的任一个,就实现了变量的动态创建。

>>> ls = ['name','无奇']
>>> i=21
>>> globals()[ls[0]+str(i)]=ls[1]
>>> name21
'无奇'

动态变量的应用。
最典型的就是python内置的命名重组。

>>> dic = {'name':['胡舟', '越涵', '刘琦'], 'age':[12, 34, 56], 'time':['近代', '中古', '现代']}
def get(**keyargs):
    r = []
    for key, val in keyargs.items():
        n,f = key.split('__')
        for dk in dic:
            if dk == n:
                if f == 'gt':
                    for i in dic[dk]:
                        if i>val:
                            r.append(i)
                elif f == 'gte':
                    for i in dic[dk]:
                        if i>=val:
                            r.append(i)
                elif f == 'lt':
                    for i in dic[dk]:
                        if i<val:
                            r.append(i)
                elif f == 'lte':
                    for i in dic[dk]:
                        if i<=val:
                            r.append(i)
                elif f == 'include':
                    for i in dic[dk]:
                        if val in i:
                            r.append(i)
                elif f == 'in':
                    for i in dic[dk]:
                        if val == i:
                            r.append(i)
        return r
    
>>> get(age__gt=12)
[34, 56]
>>> get(age__gte=34)
[34, 56]
>>> get(age__gt=34)
[56]
>>> get(age__lt=34)
[12]
>>> get(age__lte=34)
[12, 34]
>>> get(name__include='胡')
['胡舟']
>>> get(time__in='近代')
['近代']
def gte(key, value, locals=locals()):  
    r = []
    for k,v in locals().items():
        if v == key:
            key = k + '__gte'
            break
    exec(f're = get({key}={value})\nr.append(re)')
    return r[0]
    
>>> age=''
>>> gte(age,12)
[12, 34, 56]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值