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 相关文章推荐
Windows系统下安装Python的SSH模块教程
Feb 05 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
python将视频转换为全字符视频
Apr 26 Python
python pandas生成时间列表
Jun 29 Python
对python while循环和双重循环的实例详解
Aug 23 Python
django创建简单的页面响应实例教程
Sep 06 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Python OrderedDict字典排序方法详解
May 21 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
python实现邮件循环自动发件功能
Sep 11 Python
Python3+Flask安装使用教程详解
Feb 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
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
Dom与浏览器兼容性说明
2010/10/25 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vue动态路由:路由参数改变,视图不更新问题的解决
2019/11/05 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
Python实现批量读取word中表格信息的方法
2015/07/30 Python
Python中使用platform模块获取系统信息的用法教程
2016/07/08 Python
python安装twisted的问题解析
2018/08/21 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
对祖国的寄语大全
2014/04/11 职场文书
国家助学金感谢信
2015/01/21 职场文书
超市督导岗位职责
2015/04/10 职场文书
工程技术员岗位职责
2015/04/11 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL