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发送arp欺骗攻击代码分析
Jan 16 Python
Flask数据库迁移简单介绍
Oct 24 Python
python3如何将docx转换成pdf文件
Mar 23 Python
python学习入门细节知识点
Mar 29 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
Pytorch入门之mnist分类实例
Apr 14 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
[原创]Python入门教程4. 元组基本操作
Oct 31 Python
python如何制作英文字典
Jun 25 Python
Python autoescape标签用法解析
Jan 17 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
django中related_name的用法说明
May 20 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实现远程下载文件到本地
2015/05/17 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php注册和登录界面的实现案例(推荐)
2016/10/24 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
js word表格动态添加代码
2010/06/07 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
浅析js封装和作用域
2013/07/09 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
js实现删除json中指定的元素
2020/09/22 Javascript
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
Python 切分数组实例解析
2019/11/07 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
大学生求职自我评价
2014/01/16 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
办公室主任个人总结
2015/02/28 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书