美文网首页
动态拼接变量名并使用

动态拼接变量名并使用

作者: 转身丶即天涯 | 来源:发表于2018-02-23 11:26 被阅读703次

有些变量的命名规则是类似的,比如obj1,ojb2,obj3,等等。如果我想把他们加入到list中,常规操作就是一个一个的加,但是当这样的变量数量越来越多时,就不能这么做了,是会累死人的。
那么想到了一个办法,既然变量的命名是有规则的,根据规则我用字符串拼接出变量的名字,再利用eval()函数根据名字获取该对象的引用,这样不就能批量操作了么。
看一个例子:

obj1 = 'abc'
obj2 = [1, 2, 3]
obj3 = {'a': 1, 'b': 2, 'c': 3}
obj4 = {1, 2, 3, 4}
obj5 = (1, 2, 3)
obj6 = (x for x in range(1,5))
obj7 = 123

list_content = []
for i in range(1, 8):
    content = 'obj' + str(i)
    list_content.append(eval(content))
print(list_content)

content表示拼接好的变量,然后使用eval()函数获取对象,在利用list.append()函数加入list。

关键点在于这个eval()函数,之前不知道有这么个函数,自然被这个问题困扰。
那么我们看一下eval()这个函数是干啥的。
cmd+左键点击,调到函数定义的地方,跳到了builtins.py中。


image.png

根据函数文档的描述来看,eval()的作用就是“评估全局或者局部上下文的中源”,听起来像文言文,理解一下,根据给定的字符串来寻找全局或者局部作用于的变量。这样好一点了吧?
会到刚才的例子中,再结合函数的文档注释,“The source may be a string representing a Python expression or a code object as returned by compile().”,source可能用一个字符串来表示一个python表达式或者一个被compile()函数返回的对象。
一切都清晰了,eval(source),source就是变量的名字(type: str)。

相关文章

  • 动态拼接变量名并使用

    有些变量的命名规则是类似的,比如obj1,ojb2,obj3,等等。如果我想把他们加入到list中,常规操作就是一...

  • Python动态变量名定义与调用

    动态变量名赋值 在使用tkinter时需要动态生成变量,如动态生成var1...var10变量 使用exec动态赋...

  • 拼接变量名

  • express CRUD

    添加路由拼接 修改路由途径 将路径加上 restful风格 - rest,并添加动态路由 :resource 添加...

  • ES6常用知识点总结

    字符串拼接 es6使用 包裹字符串,插入变量数据${变量名}// 字符模板的写法var ss= '苹果';var...

  • vue音乐APP03:jsonp promise化

    1.JSONP的用途和原理 使用JSONP主要是目的通过动态创建Script,动态拼接url,进而抓取数据,实现跨...

  • jsonp跨域问题浅析

    超级精简: 使用JSONP主要是目的通过动态创建Script,动态拼接url,进而抓取数据,实现跨域。确切地说,A...

  • java基础-day49-Myba03

    一、动态SQL【重点】 MyBatis的映射文件中支持在基础SQL上添加一些逻辑操作,并动态拼接成完整的SQL之后...

  • mybatis从使用到了解(七)_mybatis动态sql的妙用

    动态SQL 在使用JDBC拼接SQL的时候,经常要确保不能完了必要的空格,对于的逗号,而mybatis的动态SQL...

  • 前端面试知识点(7)——前端进阶2

    1、手写jsonp的实现 基础:script标签可以跨域获取脚本 进阶:动态生成script标签,并拼接url填...

网友评论

      本文标题:动态拼接变量名并使用

      本文链接:https://www.haomeiwen.com/subject/tmatxftx.html