python 动态生成变量名以及动态获取变量的变量名方法


Posted in Python onJanuary 20, 2019

前言

需求:

必须现在需要动态创建16个list,每个list的名字不一样,但是是有规律可循,比如第一个list的名字叫:

arriage_list_0=[],第二个叫arriage_list_1=[]……..依次类推,但是我又不想手动的去写16个这样的名字,太累了,而且增加了代码的冗余性,灵活性也不强,所以有没有一种方法是能动态创建list名称的呢?答案是有的!而与之对应,既然要对上面的列表动态操作,肯定是少不了动态去解析list名称。所以下面开始介绍方法。

python 动态生成变量名

locals函数

代码之前,先介绍一个函数:

locals() 函数会以字典类型返回当前位置的全部局部变量。

菜鸟上的例子:

>>>def runoob(arg): # 两个局部变量:arg、z
...  z = 1
...  print (locals())
... 
>>> runoob(4)
{'z': 1, 'arg': 4}  # 返回一个名字/值对的字典

下面用自己的例子来实现下,目标:动态创建名字为list_0到list_15的16个list列表:

关键代码:

# 第一步 准备locals函数
prepare_list = locals()
""" 
第二步 循环16次,从0-15赋值给locals函数对应的变量prepare_list 
  prepare_list是一个字典,所以将我们需要的列表名称作为key值传入
"""
for i in range(16):
 arriage_list['list_' + str(i)] = []

测试代码:

def test_list_pre():
 prepare_list = locals()
 for i in range(16):
  prepare_list['list_' + str(i)] = []
  prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '个list')
 print(prepare_list['list_0'])
 print(prepare_list['list_1'])
 print(prepare_list['list_2'])
 print(prepare_list['list_3'])

if __name__ == '__main__':
 test_list_pre()

实验截图:

python 动态生成变量名以及动态获取变量的变量名方法

实际证明,已经动态的每次往list插入了值。

python 动态获取变量的变量名

需求目标:如果有了上面的动态命名list,那么当动态获取变量的变量名,就需要如下的操作:

利用python原生的inspect库来实现:

核心代码:

import inspect
def get_variable_name(variable):
 callers_local_vars = inspect.currentframe().f_back.f_locals.items()
 return [var_name for var_name, var_val in callers_local_vars if var_val is variable]

测试代码:

def get_variable_name(variable):
 callers_local_vars = inspect.currentframe().f_back.f_locals.items()
 return [var_name for var_name, var_val in callers_local_vars if var_val is variable]


if __name__ == '__main__':
 prepare_list = locals()
 for i in range(16):
  prepare_list['list_' + str(i)] = []
  prepare_list['list_' + str(i)].append(('我是第' + str(i)) + '个list')
 a = get_variable_name(prepare_list['list_0']).pop()
 b = get_variable_name(prepare_list['list_1']).pop()
 print(a)
 print(b)

实验截图:

python 动态生成变量名以及动态获取变量的变量名方法

以上这篇python 动态生成变量名以及动态获取变量的变量名方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中List.count()方法的使用教程
May 20 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
200行自定义python异步非阻塞Web框架
Mar 15 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
DES加密解密算法之python实现版(图文并茂)
Dec 06 Python
python实现剪切功能
Jan 23 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
Python爬取YY评级分数并保存数据实现过程解析
Jun 01 Python
Python库安装速度过慢解决方案
Jul 14 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
python如何利用Mitmproxy抓包
Oct 10 Python
python中subplot大小的设置步骤
Jun 28 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 #Python
对python中词典的values值的修改或新增KEY详解
Jan 20 #Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 #Python
Python字典循环添加一键多值的用法实例
Jan 20 #Python
在PyCharm中批量查找及替换的方法
Jan 20 #Python
Python 移动光标位置的方法
Jan 20 #Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 #Python
You might like
几个php应用技巧
2008/03/27 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
phplot生成图片类用法详解
2015/01/06 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
JS图片压缩(pc端和移动端都适用)
2017/01/12 Javascript
Vue 进入/离开动画效果
2017/12/26 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
vue实现信息管理系统
2020/05/30 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
Python笔记之代理模式
2019/11/20 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
C语言如何决定使用那种整数类型
2016/11/26 面试题
亿企通软件测试面试题
2012/04/10 面试题
土木工程师职业规划范文
2014/03/07 职场文书
经营理念口号
2014/06/21 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
丧事答谢词大全
2015/09/30 职场文书