`from abc import a,b`和`from abc import(a,b)`之间有什么区别吗?

时间:2013-03-13 03:07:32

标签: python import

我在阅读代码时遇到from module_abc import (a, b)。我想知道这是否相当于from module_abc import a,b?如果没有,那有什么区别?

2 个答案:

答案 0 :(得分:3)

他们是完全相同的:

>>> import dis
>>> def a():
...     from module_abc import (a, b)
...     
>>> def b():
...     from module_abc import a, b
...     
>>> dis.dis(a)
  2           0 LOAD_CONST               1 (-1)
              3 LOAD_CONST               2 (('a', 'b'))
              6 IMPORT_NAME              0 (module_abc)
              9 IMPORT_FROM              1 (a)
             12 STORE_FAST               0 (a)
             15 IMPORT_FROM              2 (b)
             18 STORE_FAST               1 (b)
             21 POP_TOP             
             22 LOAD_CONST               0 (None)
             25 RETURN_VALUE        
>>> dis.dis(b)
  2           0 LOAD_CONST               1 (-1)
              3 LOAD_CONST               2 (('a', 'b'))
              6 IMPORT_NAME              0 (module_abc)
              9 IMPORT_FROM              1 (a)
             12 STORE_FAST               0 (a)
             15 IMPORT_FROM              2 (b)
             18 STORE_FAST               1 (b)
             21 POP_TOP             
             22 LOAD_CONST               0 (None)
             25 RETURN_VALUE        

答案 1 :(得分:1)

一直认为它是一样的,我使用第一个选项,以防我必须移动到下一行(例如,要导入的类太多)

from moduleA import (ClassA, ClassB, ClassC,
                     DataA, DataB)