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

Python字符串格式化(替换字段名)遇math模块AttributeError问题求助

解决AttributeError: module 'math' has no attribute 'name'的问题

你遇到的问题其实是一个很容易忽略的拼写细节——你在格式化字符串里用了_name_(单下划线包裹),但Python模块的名称属性是__name__(双下划线包裹),这就是触发AttributeError的核心原因。

先看你出错的代码:

import math
tmpl="This {mod._name_} module defines the value of pie as {mod.pi}"
print(tmpl.format(mod=math))

这里的{mod._name_}是错误的写法,Python里模块的名称属性是__name__,前后都是双下划线,这是Python的特殊属性约定(也常被称为“魔法属性”)。另外顺便提一句,你把圆周率的拼写写成了pie,虽然这不会引发错误,但从语义角度修正为pi会更准确。

修正后的代码如下:

import math
tmpl="This {mod.__name__} module defines the value of pi as {mod.pi}"
print(tmpl.format(mod=math))

运行这段代码后,会得到正确的输出:

This math module defines the value of pi as 3.141592653589793

总结一下关键点:

  • Python里模块的名称属性是__name__,前后必须是双下划线,单下划线的_name_并不是模块的内置属性
  • 注意标识符的拼写细节,单下划线和双下划线在Python中是完全不同的命名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:55:07