碰到很多变量名时。
尤其是在处理数据的时候,会面临着数据名多而导致的代码冗杂问题。
比如说在读取数据的时候,如果目录、路径比较多,代码会比较冗杂
但同时,绝对路径往往可以分割成主目录,文件序号,文件前缀名,文件后缀名等部分。
通过处理字符串,将字符串转化为变量,类内属性的赋值等方法可以简化代码

当然,首先我们都知道使用数组(列表)来存储变量名,要把被重复调用的代码封装成函数或者类,然后将输入数据以参数的形式给它们,这是最基本的。

那如果不使用数组(列表)呢?

一、生成具有一定规律的字符串

利用Python 的 f 关键字,例子如下:

for i in range(5):str1 = f'{i**2}_question_{i+1}'print(str1)

输出

0_question_1
1_question_2
4_question_3
9_question_4
16_question_5

二、对象属性赋值函数 setattr

利用 Python 内置的 为对象的属性赋值的函数 setattr 可以完成对象级别的具有规律性属性变量的赋值。
注意:需要取到该属性的值时,要用 getattr 内置函数。
例子

class Big:def __init__(self):passbig = Big()
for i in range(5):setattr(big, f'small{i+1}', np.random.rand(3))
for i in range(5):tmp_value = getattr(big, f'small{i+1}')print(tmp_value)

输出

[0.14843873 0.54310117 0.22508172]
[0.6554616  0.49570728 0.41131248]
[0.93567319 0.24442312 0.17684138]
[0.2707888  0.11886321 0.87704171]
[0.32423134 0.81861119 0.89903461]

三、将字符串转换为变量

globals() locals() 两个内置函数 能达到将字符串转换为变量的目的。
例子如下

例1

str = "list_path"
path1 = '/mnt/data3/home/data1/file1'
path2 = '/mnt/data3/home/data1/file2'
locals()[str] = [path1,path2]
print('\nlist_path type: ',type(list_path))
print('list_path value: ',list_path)

输出:

list_path type:  <class 'list'>
list_path value:  ['/mnt/data3/home/data1/file1', '/mnt/data3/home/data1/file2']

例2

dir_OnlyRGB = 'D:/Desktop/OnlyRGB/'
dir_DepthMSE = 'D:/Desktop/DepthMSE/'file_name_loss = 'save_list_loss_depth.npy'
file_name_psnr = 'save_list_psnr.npy'list_path_OnlyRGB = []
list_path_OnlyRGB.append(dir_OnlyRGB+file_name_loss)
list_path_OnlyRGB.append(dir_OnlyRGB+file_name_psnr)list_path_DepthMSE = []
list_path_DepthMSE.append(dir_DepthMSE+file_name_loss)
list_path_DepthMSE.append(dir_DepthMSE+file_name_psnr)list_loss_type = ['list_path_OnlyRGB','list_path_DepthMSE']for loss_type in  list_loss_type:for path in globals()[loss_type]:print(path)

输出:

D:/Desktop/OnlyRGB/save_list_loss_depth.npy
D:/Desktop/OnlyRGB/save_list_psnr.npy
D:/Desktop/DepthMSE/save_list_loss_depth.npy
D:/Desktop/DepthMSE/save_list_psnr.npy

globals() :返回当前作用域内全局变量的字典

locals() 函数功能返回当前作用域内的局部变量的字典

四、glob函数 获取文件的全路径

        self.color_paths = sorted(glob.glob(os.path.join(self.input_folder, 'colour', '*.png')))

参考

  1. 3 Ways to Convert String to Variable Name in Python

  2. 关键字local、global和内置函数【locals、globals】

关于精简(函数化)因为输入数据多条而导致的冗杂代码的总结相关推荐

  1. DolphinDB 函数化编程案例教程

    DolphinDB支持函数化编程:函数对象可以作为高阶函数的参数.这提高了代码表达能力,可以简化代码,复杂的任务可以通过一行或几行代码完成. 本教程介绍了一些常见场景下的函数化编程案例,重点介绍 Do ...

  2. VMware Workstation 7.1.5 build 491717 精简汉化版

    http://www.anxz.com/down/3815.html 软件语言:多国语言     软件类型:系统其它/破解版   运行环境:Win2003, WinXP, Win7, Vista   ...

  3. 小程序云函数加载数据20条限制 分页更加丝滑

    小程序云函数加载数据20条限制 处理分页加载 云函数无需突破20条.100条的局限,让分页更加丝滑: 首先认识一下,云函数中的 api 方法 代码实现 云函数无需突破20条.100条的局限,让分页更加 ...

  4. 写好结构化论文的10条规则

    金融观察家 编者语 文章内容为写好结构化论文的10条规则,前四条规则要求以读者为中心,第5-8条规则要求遵循规范的宏观结构,最后两条突出顺序.敬请阅读. 来源/微信公众号"学位与写作&quo ...

  5. Matlab的simplify函数化简符号表达式

    Matlab的simplify函数化简符号表达式 此处只讨论用法,函数分析日后补充 用法:对一个符号式子同类项的系数进行合并同时按照幂次从高到底进行排列,有因子会被提取出.必须得是一个符号式子,否则没 ...

  6. vue进入页面执行的钩子函数_解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题...

    项目需求:图片加载时,当鼠标滚动至当前图片进行加载并加上上滑特效,实现这个效果需要对文档文档滚动位置和图片的当前位置进行比较.但是mounted 钩子函数执行时img图片并未加载出来也就是占位为空,导 ...

  7. 看看函数名和注释,AI就能自动生成代码,程序员:这不真实,我要失业

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:机器之心  参与:张倩.Racoon X.Jamin 你 ...

  8. 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...

    当前位置:我的异常网» C语言 » 下头函数,只要被调用就会导致单片机死机,请大家帮 下头函数,只要被调用就会导致单片机死机,请大家帮忙分析 www.myexceptions.net  网友分享于:2 ...

  9. C语言main()主函数执行完毕后是否会再执行一段代码

    C语言main()主函数执行完毕后是否会再执行一段代码 分享到: QQ空间 新浪微博 腾讯微博 豆瓣 人人网 main() 主函数执行完毕后,是否可能会再执行一段代码?给出说明. main主函数是所有 ...

最新文章

  1. Material组件之MaterialApp、Scaffold、AppBar学习笔记
  2. 网站改版后确保无误才能上线!
  3. 常用系统分析监控工具
  4. JAVA进制及进制之间的转换
  5. 前端编程之jQuery
  6. 在MySQL数据库上使用Quartz Scheduler入门
  7. MySQL 表一列逗号分隔字段,按逗号切割
  8. js正则检测输入内容为数字,包括负数,整数,浮点数,亲测可用.JS检测整数,js检测浮点数,js检测负数,js检测数字,js限制输入框只输入数字,解决H5 number类型只能输入正数问题.
  9. 【计算机网络】物理层设备功能浅析
  10. potplayer直播源模板
  11. 为什么有的锂电保护板需要激活之锂电池保护板怎么激活
  12. pytorch 使用netron可视化
  13. 【转载】Win7任务栏缩略图不见了?!
  14. Android 实现扫描二维码功能
  15. Unity出IOS包报错记 -1
  16. 腾讯云配置密钥使用putty登录 PuTTY实现Windows向Linux上传文件
  17. 如何使用磁盘管理不删除数据合并分区?
  18. 在线问答系统---数据库管理
  19. 大数据技术-Kerberos学习笔记
  20. NCAE(全国工业和信息化应用人才考试 )-- 服务外包 JAVA 软件开发复习整理(二)

热门文章

  1. Apple:万亿收入指日可待
  2. 视源股份(CVTE)亮相世界顶级计算机视觉盛会CVPR 2017
  3. Feign-独立使用-实战
  4. JavaScript实现POP窗体的onclose功能
  5. 今天的Google Doodle
  6. 苹果微信更新不了最新版本_教你安卓微信怎么更新到最新版本?
  7. CSS文本溢出用...显示
  8. 招沿实业学生怎样才能做好投资理财工作
  9. 视频教程-ajax教程 在线视频培训教程(含课程源代码)-JavaScript
  10. ERP术语解释及SAP模块介绍