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实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
python监控文件或目录变化
Jun 07 Python
Windows 7下Python Web环境搭建图文教程
Mar 20 Python
Python格式化输出字符串方法小结【%与format】
Oct 29 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
int在python中的含义以及用法
Jun 27 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
Pandas实现一列数据分隔为两列
May 18 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
python如何建立全零数组
Jul 19 Python
基于 Python 实践感知器分类算法
Jan 07 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
Oracle 常见问题解答
2006/10/09 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
Prototype String对象 学习
2009/07/19 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
浅析return false的正确使用
2013/11/04 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
python 3.7.0 下pillow安装方法
2018/08/27 Python
python实现停车管理系统
2018/11/30 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python flask框架实现重定向功能示例
2019/07/02 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
Python 字典中的所有方法及用法
2020/06/10 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
用python修改excel表某一列内容的操作方法
2021/06/11 Python