2011-08-23 4 views
5

以下の2つのインポートステートメントには違いがありますか?それとも同じことでしょうか?これらの2つのインポートの違いはありますか?

from package import * 

import package 
+0

from package import * class_in_package() 

、[Pythonモジュールをインポート]を参照(http://effbot.org/zone/import-confusion.htm)。 –

答えて

12

from package import *パッケージからローカル名前空間にすべてをインポートします。これは望ましくないもの(ローカルのものを上書きする関数のような)を導入する可能性があるため、これはお勧めしません。これはすばやく便利なインポートツールですが、状況が深刻な場合は、from package import X,Y,Zまたはimport packageの構文を使用する必要があります。

import packageパッケージからローカルpackageオブジェクトにすべてをインポートします。したがって、パッケージがsomething()関数を実装する場合は、package.something()で使用します。

また、ネストされた名前空間のケースについてもう1つ話しておきましょう。関数package.blabla.woohoo.func()があり、import package.blabla.woohooを使用でき、package.blabla.woohoo.func()を使用できますが、それは複雑すぎます。代わりに、簡単な方法はfrom package.blabla import woohooで、次にwoohoo.func()またはfrom package.blabla.woohoo import funcを使用し、次にfunc()を使用します。私はこれが理にかなってほしい。そうでない場合は、ここでのコード片が説明します:

import package.blabla.woohoo 
package.blabla.woohoo.func() 

from package.blabla import woohoo 
woohoo.func() 

from package.blabla.woohoo import func 
func() 

希望はこのことができます:)

3

差はパッケージの名前空間を使用することです。それらは非常に異なっている

import package 
package.class_in_package() 
関連する問題