富士山下
状态
文章总数
65篇 总字数
9.0万 运营时长
2年9个月分类
标签
AI Arch BF CLI CSS Fuwari Giscus GTK HEO Hyprland jQuery JS KDE K签 Linux Lisp LLM Path Pypi Python RSS Textual TUI Vim VTB VUP Whl WP 上海 专业 主题 云朵 享乐 优化 伦理 便利店 俄国 光标 内省 内耗 函数式 分析 创伤 创意 判断 前端 北京 参观 反思 可爱 哲学 商业 回忆 国庆 壁纸 天津 女仆 姐妹 字典 学习 安装 实用 对话 工具 库 度假 开发环境 开源 归档 微风 心理 总结 意义 技校 抚远 拥抱 推荐 插件 摄影 政策 故障排查 效果 散文 文件 文化 旅游 日本 日语 显卡 样式 模糊 治愈 浏览器 浦东 浦西 演讲 热力图 特效 猫猫 玩具 环境 甘城 生态 病毒 盘点 直播 社会 社团 视奸 秋游 科幻 移民 窗口 笔记 系统 红枫 终点 终端 经济 美化 美缝 耳机 脑操 自动驾驶 苏州 茅山 萌系 补档 解释器 设计 评论 话术 谷子 走路 轮子 辍学 迁移 运维 重构 随机 静安 音频 项目 颜文字 颜色 首都 魔法 麦金塔 鼠标
310 字
2 分钟
使用字典来重构 if 查询
问题
def func(parameter):
if parameter == '0001':
return '小明'
elif parameter == '0002':
return '小红'
elif parameter == '0003':
return '小马'
elif parameter == '0004':
return '晴晴'
elif parameter == '0005':
return '纳米'
else:
raise NameError('未查询到此人')
重构以上代码,必须保证其功能一致。
分析问题
此问题使用了 if...elif...else 来尝试查询键值对数据,不仅低效繁琐,还可读性差,使用字典结构就能优雅高效地存放和查询此类数据。
另外,数据与逻辑要区分开,这样逻辑就能更方便地统一处理,数据也能统一修改。
对于根据键获取值的方式,可以使用索引,也可以使用 get() 方法,但使用 get() 方法更加简洁些。
重构
先将数据转到字典:
def func(parameter):
base = {
'0001': '小明',
'0002': '小红',
'0003': '小马',
'0004': '晴晴',
'0005': '纳米'
}
然后编写查询逻辑,只需要 3 行:
def func(parameter):
base = {
'0001': '小明',
'0002': '小红',
'0003': '小马',
'0004': '晴晴',
'0005': '纳米'
}
if name := base.get(parameter):
return name
raise NameError('未查询到此人')
需要注意的是,这里使用了:= 运算符,既能赋值又可以条件判断,非常地好用。(赞赏)
如果此时间过长,文中的信息可能会失去时效性,甚至不再准确。

