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 httplib,smtplib使用方法
Sep 06 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Python中的super()方法使用简介
Aug 14 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
python实现决策树ID3算法的示例代码
May 30 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python实现弹跳小球
May 13 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
python3.4中清屏的处理方法
Jul 06 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
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
php三维数组去重(示例代码)
2013/11/26 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
JavaScript 字符编码规则
2009/05/04 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
JavaScript实现网页动态生成表格
2020/11/25 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
python单例模式实例分析
2015/04/08 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python3爬虫之设计签名小程序
2018/06/19 Python
python实现简单名片管理系统
2018/11/30 Python
对python中return与yield的区别详解
2020/03/12 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
《路旁的橡树》教学反思
2014/04/07 职场文书
国旗下的演讲稿
2014/05/08 职场文书
毕业生工作求职信
2014/06/30 职场文书
软件测试专业推荐信
2014/09/18 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS