当我阅读答案时,我仍然感到很奇怪,因此我尝试了以下代码示例。
首先,尝试构建以下文件结构:
tmpdir
  |A
     |__init__.py
     | B.py
     | C.py
现在A是一个package,而BorC是一个module。因此,当我们在ipython中尝试类似以下代码时:
其次,在ipython中运行示例代码:
  In [2]: kk = __import__('A',fromlist=['B'])
  In [3]: dir(kk)
  Out[3]: 
  ['B',
   '__builtins__',
   '__doc__',
   '__file__',
   '__name__',
   '__package__',
   '__path__']
好像fromlist像我们期望的那样工作。但是当我们尝试在桌面上做同样的事情时,事情就变得混乱了module。假设我们有一个名为C.py的模块,并且其中包含代码:
  handlers = {}
  def hello():
      print "hello"
  test_list = []
所以现在我们尝试对它做同样的事情。
  In [1]: ls
  C.py
  In [2]: kk = __import__('C')
  In [3]: dir(kk)
  Out[3]: 
  ['__builtins__',
   '__doc__',
   '__file__',
   '__name__',
   '__package__',
   'handlers',
   'hello',
   'test_list']
因此,当我们只想导入test_list时,它起作用吗?
  In [1]: kk = __import__('C',fromlist=['test_list'])
  In [2]: dir(kk)
  Out[2]: 
  ['__builtins__',
   '__doc__',
   '__file__',
   '__name__',
   '__package__',
   'handlers',
   'hello',
   'test_list']
结果显示,当我们尝试在frommodule而不是a上使用fromlist时package,fromlist参数根本没有帮助,因为module已经编译过了。导入后,将无法忽略其他对象。