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调用java的Webservice示例
Mar 10 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python按钮的响应事件详解
Mar 04 Python
解决python replace函数替换无效问题
Jan 18 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 Python
Python3 Click模块的使用方法详解
Feb 12 Python
django 数据库返回queryset实现封装为字典
May 19 Python
Python 如何创建一个线程池
Jul 28 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 Python
Python中文分词库jieba(结巴分词)详细使用介绍
Apr 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
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
Javascript实现的StopWatch功能示例
2017/06/13 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
python实现给微信公众号发送消息的方法
2017/06/30 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
浅谈PySpark SQL 相关知识介绍
2019/06/14 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
python中如何设置代码自动提示
2020/07/15 Python
Ruby如何创建一个线程
2013/03/10 面试题
法律六进活动方案
2014/03/13 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
公司证明怎么写
2014/09/22 职场文书
质量保证书
2015/01/17 职场文书
导游词之南京中山陵
2019/11/27 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
简单介绍Python的第三方库yaml
2021/06/18 Python