6

次の import ステートメントの効果の間に、微妙な、またはそれほど微妙ではない違いはありますか? サンプルプログラムで両方が使用されていることがわかりましたが、確かに、どちらも機能しているようです。機能が完全に同等であれば、Python の「やり方は 1 つしかない」という考え方に反するので、困惑しています。私は Python を始めたばかりで、良い習慣を維持しようとしています。たとえば、scipy パッケージの interpolate モジュールの場合は ...

from scipy import interpolate as spi

また

import scipy.interpolate as spi

両方とも、interpolate モジュールを現在の名前空間に spi として配置しているように見えます

4

2 に答える 2

10

いいえ、2つのステートメントに違いはありません。どちらも、まったく同じオブジェクトをまったく同じ名前でモジュール名前空間(globals())に配置します。

彼らはそれについてわずかに異なる方法で取り組みますが、最終結果は同じです。

基本的に、最初の機能は次のとおりです。

from scipy import interpolate
spi = interpolate
del interpolate

そして2番目は

import scipy.interpolate
spi = scipy.interpolate
del scipy

そして最後にあなたが持っているのは関数spiにバインドされた名前だけですinterpolate

個人的には、そのような関数の名前を変更するのではなく、そのままにしimport scipyて使用し、コード全体でオブジェクトがどこから来たのscipy.interpolateを明確に伝えるか、を使用します。from scipy import interpolate

オブジェクトの名前を変更すると、入力が簡単になる場合がありますが、数か月の不在後にこのコードに再度アクセスしたときに、自分や他の人が後で理解するのが難しくなる可能性があります。

于 2012-09-25T08:42:16.067 に答える
0

好みの問題ですよ、本当に。

この特定のケースでは、 を使用して、 のサブモジュールであるimport scipy.interpolate as spiことを思い出します。モジュールから関数をインポートする場合は、.interpolatescipyfrom module import function

唯一のことは、選択した規則に一貫性を持たせることです。

于 2012-09-25T09:05:27.340 に答える