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 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
Python使用arrow库优雅地处理时间数据详解
Oct 10 Python
python如何实现int函数的方法示例
Feb 19 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
python 读取Linux服务器上的文件方法
Dec 27 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
python numpy数组中的复制知识解析
Feb 03 Python
Python关于反射的实例代码分享
Feb 20 Python
python实现ssh及sftp功能(实例代码)
Mar 16 Python
python 实现IP子网计算
Feb 18 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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
Javascript 面向对象 命名空间
2010/05/13 Javascript
js 函数的副作用分析
2011/08/23 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
详解python的四种内置数据结构
2019/03/19 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python selenium xpath定位操作
2020/09/01 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
大学军训感言
2014/01/10 职场文书
高二地理教学反思
2014/01/24 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
党员承诺书怎么写
2014/05/20 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
暑期实践个人总结
2015/03/06 职场文书
建国大业观后感600字
2015/06/01 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL