如何在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
相关产品推荐
相关产品推荐

