
18
2 章 Python と JavaScript 間の言語学習の橋渡し
from ..io import api #
❸
❶
test_data.py
モジュールをパッケージのトップディレクトリから絶対的にインポート。
❷ 明示的(
. import
)および暗黙的な相対的インポート。
❸
tests
の兄弟パッケージからの相対的インポート。
2.3.4
名前空間の汚染を防ぐ
Python
モジュールで定義した変数はカプセル化されているので、明示的にインポートしている
場合を除き(例えば
from foo import baa
など)、インポートされたモジュールの名前空間から
ドット表記(
foo.baa
など)を使ってアクセスします。このグローバル名前空間のモジュール化は
推奨されていて、暗黙的よりも明示的な文の方が重要であるという
Python
の基本理念
†
の
1
つに
なっています。誰かの
Python
コードを分析する際は、クラス、関数、変数の出所を正確に知るこ
とができるようにします。同じくらい重要なことに、名前空間の保全は変数の衝突やマスキング
(コードベースが大きくなったときの大きな潜在的問題)の可能性を減らします。
JavaScript
に対するもっともな批判としては、「名前空間の規約に関していいかげんである」と
いう指摘があります。最もひどい例は、関数外で宣言した変数や
var
キーワード
‡
のない変数が宣
言されたスクリプト内にとどまらずにグローバルになってしまうことです。この状況を改善する方
法はさまざまありますが、私のお勧めの方法は ...