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.4编程实现简单抓取爬虫功能示例
Sep 14 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
Python比较配置文件的方法实例详解
Jun 06 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
Python制作词云图代码实例
Sep 09 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python 实现将某一列设置为str类型
Jul 14 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
python实现图片九宫格分割的示例
Apr 25 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
Protoss魔法科技
2020/03/14 星际争霸
PHP 强制下载文件代码
2010/10/24 PHP
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
对python的输出和输出格式详解
2018/12/08 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
财务出纳岗位职责
2014/02/03 职场文书
司法助理专业自荐书
2014/06/13 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
团日活动总结格式
2015/05/11 职场文书
2019销售早会主持词
2019/06/27 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS