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面相对象编程中对象的属性与类的方法
Jan 19 Python
听歌识曲--用python实现一个音乐检索器的功能
Nov 15 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
Django 跨域请求处理的示例代码
May 02 Python
TensorFlow实现模型评估
Sep 07 Python
python事件驱动event实现详解
Nov 21 Python
Python字符串内置函数功能与用法总结
Apr 16 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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下使用SMTP发邮件的代码
2008/01/10 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
详解python3中的真值测试
2018/08/13 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
Python2与Python3的区别点整理
2019/12/12 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
办公室年终个人自我评价
2013/10/28 职场文书
两则小学生的自我评价分享
2013/11/14 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
财务部会计岗位职责
2015/02/03 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
Java的Object类的九种方法
2022/04/13 Java/Android