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

Python高阶函数Callable相关疑问:X/Y值计算与max_func实现逻辑

Python代码问题解答

X、Y的取值结果

按照func_max的定义,h(x)的返回值为f(x)和g(x)的最大值,其中f(x)=x²,g(x)=5x:

  • 计算X = h(3):
    f(3) = 3² =9,g(3)=5*3=15,取最大值得X=15
  • 计算Y = h(6):
    f(6) = 6² =36,g(6)=5*6=30,取最大值得Y=36

max_func的正确写法与x的作用逻辑

你原来的代码报错的核心原因是:max_func的功能是返回一个新的函数,而不是直接计算f和g的大小,你在max_func的层级直接引用x时,x还没有被定义传入。
正确的代码组装顺序如下:

  1. 先定义基础函数f、g
def f(x):
  return x**2
  
def g(x):
  return 5*x
  1. 定义max_func,内部嵌套实现接收x作为参数的新函数
def max_func(f,g):
    # 嵌套的新函数才是最后赋值给h的函数,x是调用h时传入的参数
    def new_function(x: int) -> int:
        if f(x) > g(x):
            return f(x)
        else:
            return g(x)
    # max_func返回新函数本身,不会立刻执行计算
    return new_function
  1. 调用逻辑和你写的一致
h = max_func(f,g)
X = h(3)
Y = h(6)

关于小写x的逻辑说明:

  • 嵌套的new_function里的x是形参,当你执行h(3)时,相当于把3传给这个x,再代入f(x)和g(x)计算大小返回结果
  • 如果直接在max_func的层级写f(x),此时max_func只接收了f和g两个参数,x没有任何赋值,自然会运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:05