Python “为什么会有差异?”;进口;vs.“;导入*“;?
=============Python “为什么会有差异?”;进口;vs.“;导入*“;?,python,import,Python,Import,============= """module a.py""" test = "I am test" _test = "I am _test" __test = "I am __test" ~$python Python 2.6.2(r262:716002009年4月16日09:17:39) [GCC 4.0.1(Apple Computer,Inc.build 5250)]关于达尔文 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>从进口* >>>试验 “我正在测试”
"""module a.py"""
test = "I am test"
_test = "I am _test"
__test = "I am __test"
~$python
Python 2.6.2(r262:716002009年4月16日09:17:39)
[GCC 4.0.1(Apple Computer,Inc.build 5250)]关于达尔文
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从进口*
>>>试验
“我正在测试”
>>>_检验
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“\u test”
>>>_uuu测试
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
NameError:未定义名称“\u测试”
>>>导入
>>>测试
“我正在测试”
>>>a.测试
“我在测试”
>>>a..(u)测试
“我在测试”
>>>
带有前导“u”(下栏)的变量不是公共名称,当使用from x import*
时,将不会导入
这里,\u test
和\u test
不是公共名称
从语句描述中可以看出:
如果标识符列表被替换
以星号(“*”)表示,所有公共名称
在模块中定义的都绑定在
导入的本地命名空间
声明
由模块定义的公共名称
通过检查
变量的模块命名空间
命名为“所有”;如果已定义,则必须
作为名称的字符串序列
由该模块定义或导入。
____;中给出的名称都是
被认为是公众的,并且被要求
存在如果未定义uuu all uuuu,则
公共名称集包括所有名称
在模块的命名空间中找到
不要以下划线开头
字符(“”)。应
包含整个公共API。它是
为了避免意外
导出不属于项目的项目
API(例如
是在
模块)
~ $ python
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from a import *
>>> test
'I am test'
>>> _test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_test' is not defined
>>> __test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '__test' is not defined
>>> import a
>>> a.test
'I am test'
>>> a._test
'I am _test'
>>> a.__test
'I am __test'
>>>