0

from module_abc import (a, b)コードを読んでいるときに遭遇しました。それが同等かどうか知りたいのですがfrom module_abc import a,b?そうでない場合、違いは何ですか?

4

2 に答える 2

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        
于 2013-03-13T03:12:11.817 に答える
1

いつも同じだと思っていたので、次の行に移動する必要がある場合に備えて、最初のオプションを使用しています(たとえば、インポートするにはクラスが多すぎます)

from moduleA import (ClassA, ClassB, ClassC,
                     DataA, DataB)
于 2013-03-13T03:09:49.677 に答える