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编写一个模仿CPU工作的程序
Apr 16 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
Python对象属性自动更新操作示例
Jun 15 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
Python描述符descriptor使用原理解析
Mar 21 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
Jun 29 Python
vscode调试django项目的方法
Aug 06 Python
Django正则URL匹配实现流程解析
Nov 13 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 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脚本数据库功能详解(上)
2006/10/09 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
JavaScript注入漏洞的原理及防范(详解)
2016/12/04 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
linux 下实现python多版本安装实践
2014/11/18 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python+Turtle动态绘制一棵树实例分享
2018/01/16 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
求职信范文英文版
2014/01/05 职场文书
建党伟业观后感
2015/06/01 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
redis实现排行榜功能
2021/05/24 Redis
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技