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
相关产品推荐
相关产品推荐

