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

为何f-string会阻止函数获取__doc__属性?

为什么f-string会阻止函数获取__doc__属性?

先看两个示例函数:

def foo():
    ("abc"
     "def")

def bar():
    ("abc"
    f"def")

运行后会出现这样的结果:

>>> bar.__doc__
>>> foo.__doc__
'abcdef'

函数foo的__doc__属性值为'abcdef',但bar的__doc__属性却是None。

原因其实很直接:

  • Python的规则是,函数体内第一个表达式如果是静态字符串字面量(包括多行隐式拼接的普通字符串),会自动被当作函数的文档字符串,赋值给__doc__属性。foo里的两个普通字符串属于静态字面量,Python在编译阶段就能完成拼接,所以把这个结果当成了文档字符串。
  • 而f-string是需要运行时计算的动态表达式,不属于静态字符串字面量范畴。当bar的第一个表达式里包含f-string时,整个表达式不再是单纯的静态字符串,Python不会把它识别为文档字符串,因此bar.__doc__保持默认的None值。

内容的提问来源于stack exchange,提问作者no step on snek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:53:43