Luca Bravo
统计
文章总数 52篇
总字数 6.6万
上次更新 1天前
运营时长 2年6个月
分类
标签
AI Arch BF CLI CSS Fuwari Giscus GTK HEO JS KDE K签 Linux Lisp LLM Path Pypi Python RSS 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('未查询到此人')
需要注意的是,这里使用了:=
运算符,既能赋值又可以条件判断,非常地好用。(赞赏)