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简单实现刷新智联简历
Mar 30 Python
python在非root权限下的安装方法
Jan 23 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
python 接收处理外带的参数方法
Dec 03 Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
Python日志处理模块logging用法解析
May 19 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
pycharm 复制代码出现空格的解决方式
Jan 15 Python
一个入门级python爬虫教程详解
Jan 27 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 数字左侧自动补0
2008/03/31 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
Javascript中对象继承的实现小例
2014/05/12 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
对比分析json及XML
2014/11/28 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery实现列表内容的动态载入特效
2015/08/08 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
jQuery中的一些小技巧
2017/01/18 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
Speedo速比涛德国官方网站:世界领先的泳装品牌
2019/08/26 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
战略合作协议书范本
2014/04/18 职场文书
医院信息公开实施方案
2014/05/09 职场文书
建筑安全生产责任书
2014/07/22 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python