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

如何在Python中通过用户输入的函数名调用其他文件中的函数?

嘿,这个需求其实很好实现,咱们可以借助Python的getattr()函数来动态获取并调用模块里的函数,具体做法如下:

具体实现步骤

首先你的a.py完全不用改动,保持原来的代码就行:

def add(data):
    c = data + 120
    return c

接下来修改b.py的代码,让它支持根据用户输入的函数名动态调用:

import a

funcname = input("Enter function name: ")
data = int(input("Enter value to be sent: "))

# 从a模块中取出对应名称的函数
target_function = getattr(a, funcname, None)

# 先检查这个对象是不是可调用的函数
if callable(target_function):
    result = target_function(data)
    print(f"计算结果是:{result}")
else:
    print(f"出错啦:模块a里没有名为'{funcname}'的函数哦")

核心逻辑说明

  • getattr(a, funcname, None):这个方法会在模块a里查找名为funcname的对象,如果找不到就返回None(第三个参数是咱们设置的默认值),完美适配用户输入任意函数名的场景。
  • callable(target_function):用来判断拿到的对象是不是真正的函数,避免用户输入一个非函数的名称导致程序报错崩溃。

额外优化小技巧

如果想让程序更健壮,比如处理用户输入非整数的情况,可以加个异常捕获:

import a

funcname = input("Enter function name: ")
try:
    data = int(input("Enter value to be sent: "))
except ValueError:
    print("哎呀,请输入有效的整数哦!")
    exit()

target_function = getattr(a, funcname, None)
if callable(target_function):
    result = target_function(data)
    print(f"计算结果是:{result}")
else:
    print(f"出错啦:模块a里没有名为'{funcname}'的函数哦")

这样用户输入非整数的时候,程序会给出友好提示,而不是直接崩溃啦~

内容的提问来源于stack exchange,提问作者user13505457

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:17:54