Python如何批量生成和调用变量


Posted in Python onNovember 21, 2020

这几天写代码中遇到的一个常见问题,在Python中如何批量的生成一些变量,如生成变量X1, X2, X3,并在后续的方法中调用,完成赋值、取值等操作。这个问题也算是常见的吧,之前遇到过,也不了了之了。而这次遇到了同样的问题,虽然是创建三个变量数量较少,但从代码维护和易读性的角度考虑,需要使用一些恰当的手段,来避免重复写三次同样代码带来的弊端。一百次,一万次?总不能复制这么多次吧。(为何不复制?详情参考软件工程中的软件维护)。

因此有必要养成良好的习惯,而不是复制三次同样的代码。

使用Locals()方法

在普通函数内的确可以使用,但在类中不行。这个问题也困扰了我很久,所以,建议在编写类时需要批量创建和调用变量时,不建议使用。

for i in range(3):
  locals() ['x' + str(i)] = i

for j in range(3):
  a = locals() ['x' + str(j)]
  print(a)
print(x0)

执行结果如下:

0
1
2
0

此时在普通函数中一切正常,但在编写的类中无法运行:

class test(object):
  def __init__(self):
    for i in range(3):
      locals() ['self.x' + str(i)] = i
  def run(self):
    for i in range(3):
      a = locals() ['self.x' + str(i)]
      print(a)

a = test()
a.run()

报错信息如下,并没有找到这个变量。而我在编写GUI时,类是常用的工具,所以在类中调用这个方法时,导致了错误。

KeyError: 'self.x0'

所以我找到了一种更加优雅的方式,使用字典。

使用字典

字典键值对的形式,尤其是键可设置为字符串,对此类问题可以提供良好的解决方案。

class test(object):
  def __init__(self):
    self.d = {}
    for i in range(3):
      self.d['x' + str(i)] = i
  def run(self):
    for i in range(3):
      a = self.d['x' + str(i)]
      print(a)

asd = test()
asd.run()

此时便可以愉快的在类中批量的生成与调用变量。而在普通函数中也是可以的:

d = {}

for i in range(3):
  d['x' + str(i)] = i
  
print(d.keys())
print(d['x0'])

for i in range(3):
  print(d['x' + str(i)])

输出结果如下:

dict_keys(['x0', 'x1', 'x2'])
0
0
1
2

以上就是Python如何批量生成和调用变量的详细内容,更多关于Python批量生成和调用变量的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python语言编写电脑时间自动同步小工具
Mar 08 Python
Python 字符串操作方法大全
Mar 11 Python
python实现数通设备tftp备份配置文件示例
Apr 02 Python
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Python3 Click模块的使用方法详解
Feb 12 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
python+opencv实现目标跟踪过程
Jun 21 Python
在终端启动Python时报错的解决方案
Nov 20 #Python
python 批量下载bilibili视频的gui程序
Nov 20 #Python
Python ellipsis 的用法详解
Nov 20 #Python
python 动态渲染 mysql 配置文件的示例
Nov 20 #Python
Python paramiko使用方法代码汇总
Nov 20 #Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 #Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 #Python
You might like
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php进程间通讯实例分析
2016/07/11 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
js兼容标准的表格变色效果
2008/06/28 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
在Django的视图(View)外使用Session的方法
2015/07/23 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
python程序如何进行保存
2020/07/03 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
个人简历自我评价
2014/02/02 职场文书
农村结婚典礼司仪主持词
2014/03/14 职场文书
暑假学习心得体会
2014/09/02 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书