Python中未主动调用的函数却被执行是什么原因
问题原因分析
- 核心问题:字典初始化时所有值会被立即计算
你定义operation字典时直接写了addition(values)、substract(values),这不是把函数本身存入字典,而是当场调用两个函数、将返回结果存入字典。所以不管你选的是选项1还是选项2,只要执行到字典初始化这行代码,两个运算函数都会被触发执行,这就是你选加法还会运行减法函数的根本原因。 - 隐性bug:变量名拼写错误
你定义运算别名列表时用的变量名是optionalias,但后续输入提示中调用的是optionalias,少了末尾的s,运行时会直接抛出变量未定义报错。
修复方案
推荐使用「字典存储函数对象、取值后再传参调用」的方案,匹配你原本的字典映射逻辑,修改代码如下:
# 字典仅存储函数对象,不要提前调用执行 operation = { 1: addition, 2: substract } # 先根据选项拿到对应运算函数,再传入参数执行 total = operation.get(choice)(values)
修改后只有你选中的选项对应的函数会被执行,不会触发其他无关函数。同时记得把输入提示代码里的optionalias改为optionalias,修复拼写问题即可正常运行。
内容的提问来源于stack exchange,提问作者Arpan Upadhyay
相关产品推荐
相关产品推荐

