12

だから私は違いが何であるかについて混乱しています...ここに私の混乱を表示するためのいくつかのコードがあります:

>>> import collections.OrderedDict as od
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named OrderedDict
>>> from collections import OrderedDict as od
>>> od
<class 'collections.OrderedDict'>

説明:

import collections.OrderedDictモジュールが見つかりませんでしたが、まだfrom collections import OrderedDict見つかりましたか?! これら2つのステートメントの違いは何ですか?

クラスは として読み取られるcollections.OrderedDictため、最初の試行でモジュールが見つからなかった理由がわかりません

ノート:

コレクションを例として使用しているだけです。私の例がコレクションに対して行ったように動作した理由を具体的に探しているわけではありませんが、インポートに関する限り、コードのさまざまな行が実際に何を要求しているかについての説明です。エラーの説明を含めたい場合は、お気軽に! ありがとう!

4

2 に答える 2

6

OrderedDictcollectionsモジュール内のクラスです。xy のようなものが表示され、そこから何かがインポートされている場合、この場合の "y" は実際にはモジュールであることを意味します。

どのように機能するかについてのドキュメントを読む必要がありますimport:こちら。長くて複雑ですが、同時に、さまざまなパッケージとモジュールを調べて、何を実行に移すべきかを見つける方法はかなり単純明快です。具体的には、 importステートメント自体とimport system .

于 2013-10-29T20:59:06.307 に答える
3

PEP 221は について話しimport asます。

import foo.bar

moduleのサブモジュール をインポートするためのものです。これは「としてインポート」できますbarfoo

import foo.bar as fb

オブジェクトがインポートされます

from foo import baz

これも「インポート」できます

from foo import baz as fb

collections.OrderedDictはサブモジュールではなくオブジェクトであるため、2 番目の方法でのみ「インポート」できます。

于 2013-10-29T20:57:56.370 に答える