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中函数的参数
Apr 27 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
python 调用钉钉机器人的方法
Feb 20 Python
python实现电子产品商店
Feb 26 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
python用opencv 图像傅里叶变换
Jan 04 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 - Html Transfer Code
2006/10/09 PHP
用文本作数据处理
2006/10/09 PHP
PHP脚本的10个技巧(5)
2006/10/09 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
javascript引用对象的方法
2007/01/11 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
三八红旗集体先进事迹材料
2014/05/22 职场文书
停车位租赁协议书
2014/09/24 职场文书
个园导游词
2015/02/04 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
windows server2008 开启端口的实现方法
2022/06/25 Servers