在Flask中调用任意Python函数可以通过几种不同的方式实现,这里提供一种优雅的方式,即使用蓝图(Blueprints)和装饰器(Decorators)来实现。
当你需要在Flask应用中调用多个不同的Python函数,并且希望这些函数能够根据不同的URL路径或者HTTP方法来响应时,可以使用蓝图和装饰器。
from flask import Flask, Blueprint, request
app = Flask(__name__)
# 创建一个蓝图实例
api_bp = Blueprint('api', __name__)
# 定义一个装饰器,用于调用任意函数
def call_function(func):
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
# 使用蓝图注册路由,并应用装饰器
@api_bp.route('/<func_name>', methods=['GET'])
@call_function
def dynamic_function_call(func_name):
# 这里假设有一个函数映射表,用于将字符串映射到实际的函数
function_map = {
'hello': hello_world,
'goodbye': goodbye_world
}
# 获取函数并调用
func = function_map.get(func_name)
if func:
return func()
else:
return "Function not found", 404
# 定义一些示例函数
def hello_world():
return "Hello, World!"
def goodbye_world():
return "Goodbye, World!"
# 注册蓝图
app.register_blueprint(api_bp, url_prefix='/api')
if __name__ == '__main__':
app.run(debug=True)
通过这种方式,你可以优雅地从Flask应用中调用任意Python函数,并且保持代码的清晰和模块化。
领取专属 10元无门槛券
手把手带您无忧上云