5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ツッコミ歓迎、Python勉強部屋:検索順に関すること

Last updated at Posted at 2021-06-20

Pythonエンジニア試験問題の中にこんなのがありました。次の文章が正しいかどうかという趣旨です。

#####「あるモジュールがインポートされるときにインタープリタが検索する順序は、まずビルトインモジュール、次にsys.path変数で得られるディレクトリ、最後にシンボリックリンクを置いてあるディレクトリである。」

そもそも何を言っているのか意味がわからない!
私なりに解釈してみました。かなり強引です(ツッコミ歓迎)。
文章を4つのパートに分けました。

#####「あるモジュールがインポートされるときにインタープリタが検索する順序」
とは、忘れ物をしたとき、物のとき探す順番のようなもの、たとえば家の中、会社、喫茶店などをイメージするといいと思います。

#####「ビルトインモジュール」

ですが,組み込み関数のあるモジュール、print()は組み込み関数で、仰々しくやるには__builtins__.をつけます。

__builtins__.print("Hello World!")

ただ、print()は組み込みで用意された関数だから、普通はこんなものをつけません。探しもののたとえ話だと、「いつもの場所」という感じで、まずは家の中を探すイメージです。

#####「次にsys.path変数で得られるディレクトリ」
ですが、sys.path変数とはたとえば
         import sys print(sys.path)

などと打ち込むと、システムに関するパスがずらずらでてくるやつです(ちなみにglot.ioでも動きました)。
探しもののたとえ話だと、次に重要な場所、たとえば、会社などですかね。

#####最後にシンボリックリンクを置いてあるディレクトリである。

シンボリックリンクはショートカットと理解しました。そこそこなデータのおいてあるところという意味でレンタル倉庫とかですかね

ただし公式ドキュメントを読むと

https://docs.python.org/ja/3/tutorial/modules.html
#####シンボリックリンクを含むディレクトリはモジュール検索パスに追加されません。

と書かれています。レンタル倉庫は探しに行かないということです。
なのでこの文章は全体として「誤り」という結論になります。

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?