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 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
详解Python中dict与set的使用
Aug 10 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
python实现人人自动回复、抢沙发功能
Jun 08 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
Python中的 ansible 动态Inventory 脚本
Jan 19 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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 验证码的实现代码
2011/07/17 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
js+css在交互上的应用
2010/07/18 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
使用Python读取大文件的方法
2018/02/11 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
使用python实现飞机大战游戏
2020/03/23 Python
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
Java程序员综合测试题
2014/04/25 面试题
妇科医生自荐信
2013/11/05 职场文书
执行总经理岗位职责
2014/02/03 职场文书
2014年审计工作总结
2014/11/17 职场文书
2019年工作总结范文
2019/05/21 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
Nginx跨域问题解析与解决
2022/08/05 Servers