You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:02