python 使用不同方法导入模块,模块中私有变量的使用区别

文章目录

  • from somemodule import *
  • import somemodule

首先我们先创建一个test.py文件,将下面代码复制进去:

num = 10
_num = 20
__num = 30

def test():
    print("--test--")

def _test2():
    print("--test2--")

def __test3():
    print("---test3--")

from somemodule import *

在使用 from somemodule import * 导入模块的情况下,不能导入或使用私有属性和方法。

>>> from test import *
>>> num
10
>>> _num
Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name '_num' is not defined
>>> __num
Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name '__num' is not defined
>>> test()
--test--
>>> _test2
Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name '_test2' is not defined
>>> __test3()
Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name '__test3' is not defined

import somemodule

在使用 import somemodule 导入模块的情况下,能导入并使用私有属性和方法。

>>> import test
>>> test.num
10
>>> test._num
20
>>> test.__num
30
>>> test._test()
Traceback (most recent call last):
  File "", line 1, in <module>
AttributeError: module 'test' has no attribute '_test'
>>> test.test()
--test--
>>> test._test2()
--test2--
>>> test.__test3()
---test3--

你可能感兴趣的:(python 使用不同方法导入模块,模块中私有变量的使用区别)