0
我在閱讀代碼時遇到from module_abc import (a, b)
。我想知道這是否相當於from module_abc import a,b
?如果不是,有什麼區別?`從abc import a,b`和`from abc import(a,b)`有沒有區別?
我在閱讀代碼時遇到from module_abc import (a, b)
。我想知道這是否相當於from module_abc import a,b
?如果不是,有什麼區別?`從abc import a,b`和`from abc import(a,b)`有沒有區別?
一直以爲它是一樣的,我使用第一種選擇的情況下,我必須移動到下一行(如過多的類進口)
from moduleA import (ClassA, ClassB, ClassC,
DataA, DataB)
他們是相同的:
>>> 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
非常有趣:從module_abc導入a作爲a,b作爲b產生完全相同的操作碼。 – kay 2013-03-13 03:23:30