Python字典仅执行指定值的方法求助(兼容Python3.4)
问题分析与解决方案
你的问题出在字典初始化阶段:当前代码里print('so much cpu')是直接执行函数调用,所以字典创建时所有print语句都会立即运行,和后续是否访问键无关。
修正方案(兼容Python3.4)
核心思路是把字典的值存储为函数对象(而非函数执行结果),只有当你需要执行时才主动调用它。
方案1:定义独立函数(适合复杂逻辑)
def handle_cpu(): print('so much cpu') def handle_user(): print('so much users') # 字典存储函数引用,不要加括号调用 all_commands = { 'cpu': handle_cpu, 'user': handle_user } # 执行指定操作 if args[0] in all_commands: all_commands[args[0]]() # 加括号才会执行函数
方案2:使用lambda(适合简单单行逻辑)
如果逻辑很简短,用lambda可以省去单独定义函数的步骤:
all_commands = { 'cpu': lambda: print('so much cpu'), 'user': lambda: print('so much users') } # 执行指定操作 if args[0] in all_commands: all_commands[args[0]]()
额外注意
你原代码里有个笔误:all_show.keys()和all_show[args[0]]应该改成all_commands,和字典变量名保持一致。
内容的提问来源于stack exchange,提问作者DeviC3
相关产品推荐
相关产品推荐

