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

Python中调用无参write函数得到的who为何可以传入参数

问题解答

你看到的现象本质是函数返回值为另一个函数的典型用法,和write本身有没有入参没有关系,具体逻辑拆解如下:

你给出的示例代码:

title = 'Thank'
def write():
    a = lambda x: title + ' ' +  x
    return a
who = write()
print(who('you'))

核心逻辑

  • write函数的作用不是直接返回字符串,而是创建并返回一个接收1个入参的匿名函数(也就是你代码里的lambda x: title + ' ' + x)
  • 你执行who = write()时,who已经被赋值为write返回的这个匿名函数,和write本身已经没有直接关联了
  • 匿名函数定义时要求传入1个参数x,所以你调用who('you')时,'you'是传给这个匿名函数的入参x,不是传给write的,自然可以正常传参运行

运行步骤拆解

  1. 执行write():内部完成匿名函数的定义,将这个匿名函数作为返回值返回
  2. 赋值给who:此时who等价于这个匿名函数,功能就是接收1个字符串参数,和全局变量title拼接后返回
  3. 执行who('you'):将'you'传给匿名函数的x参数,拼接得到'Thank you'输出

额外补充:这里匿名函数可以访问外部的title变量,是Python闭包的特性,外部变量会被返回的函数持续持有,就算外层的作用域已经执行完毕也可以正常访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:57:00