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

Python中标识符保留类别里_*的含义及相关导入规则的疑问

Python中标识符保留类别里_*的含义及相关导入规则的疑问

哈喽~我来帮你搞明白这个Python文档里的小细节!

你看到的文档里关于_*的描述是这样的:

"Not imported by from module import *."

这句话翻译过来就是:当你使用from 模块名 import *这种批量导入方式时,模块中所有以下划线_开头的标识符(变量、函数、类等等),都不会被导入到当前的代码命名空间里。

举个实际的例子就好懂了:假设我们有一个叫test_module.py的模块,里面的代码是这样的:

# test_module.py
# 公开的变量和函数
greeting = "Hello World"
def say_hi():
    return greeting

# 以下划线开头的“内部”变量和函数
_internal_note = "这是模块内部的提示"
def _check_status():
    return "模块运行正常"

当你在另一个文件里执行from test_module import *之后,你可以直接使用greeting和say_hi(),但如果你尝试直接调用_internal_note或者_check_status(),会提示你找不到这个名称。如果确实需要访问这些下划线开头的内容,你得先导入整个模块,比如import test_module,然后通过test_module._internal_note来访问。

其实这是Python里的一个约定俗成的规范:下划线开头的标识符代表“仅供模块内部使用”,虽然没有强制的访问限制,但from ... import *会自动跳过这些名字,也是在引导开发者遵循这个规范,避免误用到模块内部的实现细节。

备注:内容来源于stack exchange,提问作者Adler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:02:58