Python中如何通过输入指定函数名调用对应自定义函数
问题解决:Python单文件多练习函数调度实现
首先建议你把自定义的dict函数改名,比如改成dict_practice,避免和Python内置的字典类型重名导致功能冲突,下面的示例已经做了改名处理。
可直接运行的基础版代码(支持无参数函数调用)
# 你的练习函数定义部分 def dict_practice(): print("运行字典练习代码") # 此处放入你原来的dict函数逻辑 def emojis_prog(): print("运行emoji练习代码") # 此处放入你原来的emojis_prog函数逻辑 # 调度逻辑部分 if __name__ == "__main__": print('''choices: dict_practice emojis ''') run = input('What do you want to run? ').strip() # 映射表直接存函数对象,不要存字符串 func_map = { 'dict_practice': dict_practice, 'emojis': emojis_prog } target_func = func_map.get(run) if target_func: target_func() else: print("That program does not exist!") ``` ## 进阶版代码(支持带参数的函数调用) 如果要运行类似`greet_user(name)`这类带参数的函数,可以用下面的版本,输入时在函数名后加空格分隔参数即可,比如输入`greet_user Alice`就会自动把Alice作为参数传入: ```python # 带参数的练习函数示例 def greet_user(name): print(f"Hello, {name}!") if __name__ == "__main__": print('''choices: dict_practice emojis greet_user ''') run_input = input('What do you want to run? ').strip() # 拆分输入的函数名和参数 input_parts = run_input.split() func_name = input_parts[0] args = input_parts[1:] func_map = { 'dict_practice': dict_practice, 'emojis': emojis_prog, 'greet_user': greet_user } target_func = func_map.get(func_name) if target_func: # 解包参数传入函数 target_func(*args) else: print("That program does not exist!") ``` ## 核心修改点 - 函数映射表直接存储函数对象本身,而非字符串,拿到匹配结果后加`()`即可直接执行 - 去掉了无意义的输入字符遍历逻辑,直接用完整输入内容匹配映射表的key - 用`if __name__ == "__main__":`包裹调度逻辑,避免后续导入该文件时自动执行调度代码 - 进阶版增加了参数解析逻辑,自动拆分输入的参数传入对应函数 内容的提问来源于stack exchange,提问作者temporary
相关产品推荐
相关产品推荐

