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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
python七夕浪漫表白源码
Apr 05 Python
python实现微信防撤回神器
Apr 29 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
pytorch 常用线性函数详解
Jan 15 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Python集合操作方法详解
Feb 09 Python
python代码xml转txt实例
Mar 10 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 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
php define的第二个参数使用方法
2013/11/04 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
javascript multibox 全选
2009/03/22 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
selenium如何定位span元素的实现
2021/01/13 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
优瑞自动咖啡机官网:Jura
2018/09/29 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
一套带答案的C++笔试题
2014/01/10 面试题
2014年项目经理工作总结
2014/11/24 职场文书
写给同事的离职感言
2015/08/04 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android