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的Django框架的运行方式及处理流程
Apr 08 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
pytorch 自定义参数不更新方式
Jan 06 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
Jan 24 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
keras 模型参数,模型保存,中间结果输出操作
Jul 06 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP源代码数组统计count分析
2011/08/02 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
如何编写jquery插件
2017/03/29 jQuery
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
简单谈谈Python中的闭包
2016/11/30 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
通过实例解析python描述符原理作用
2020/01/22 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python 读取、写入txt文件的示例
2020/09/27 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
项目建议书范文
2014/05/12 职场文书
公司任命书范本
2014/06/04 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
python四种出行路线规划的实现
2021/06/23 Python