次のプログラミング言語 (Java、Python、Lisp) のソース コードを調べて解決できるソース コードの依存関係の程度はどれくらいですか。
たとえば、Python ファイルのコレクションを見て、すべてのファイルのすべての "import" ステートメントが唯一の依存関係 (ソース依存関係) であると断言できますか?
Lisp では、他のファイルで定義された関数をインクルードできる (load "filename") コマンドを認識しています。
Pythonにインポートする方法は他にもあります
例えば
somemodule = __import__("somemodulename")
また、パスは実行時に変更できるため、たとえば
import os
os
期待 するモジュールをインポートしない可能性があります。
他の方法でコードを含めることもできます
execfile(...)
execfile(filename[, globals[, locals]])
Read and execute a Python script from a file.
The globals and locals are dictionaries, defaulting to the current
globals and locals. If only globals is given, locals defaults to it.
データベースに保存されているコードやURLからダウンロードされたコードを含めることもできます
だからあなたは確かに言うことはできません
どんな種類の「インポート」ステートメントを見つけたとしても、コードがそれを使用するかどうかはわかりません。
Java では名前空間をインポートできますが、インポート ステートメントなしでクラスの完全修飾名を使用することもできます。
javax.swing.JButton but = new javax.swing.JButton("MyButton");
そして最後になりましたが、それらのすべてがある種のシンボリック プログラミングをサポートしています。プレーンな文字列を使用して、コードをロードまたは実行できます。
Object x = Class.forName("javax.swing."+compName); x.toString() を返します。