Pythonの文字列反映メカニズム

f1、 "f1"の2つの概念を区別します。前者は関数名であり、後者は文字列です。これらは異なるものです。f(1)を使用して関数を呼び出すことができます "f(1)"は呼び出すことができません。同じように見える関数を呼び出すことはできません。文字列を使用して同じように見える関数を呼び出すことはできません。

簡単なWEBルーターがここに実装されています

異なるURLに従って異なる機能を実行します

しかし、何百もの関数を書くには、それは書くには多すぎますか?

また、そうではありません

これが結果です

この場合、反射メカニズムが提案されました。

最も単純な関数を見てください

つまり、strは以下で呼び出される関数と一致しています

次に、このように考えることができます。文字列を入力して関数を呼び出すことができますか?

それは可能でなければならず、ニーズは出ており、あなたは満足するでしょう

次の操作を見る

Pythonにはそのような機能が組み込まれています

この関数には2つのパラメーターがあります

前面はモジュールまたはメソッドで、背面は文字列です

一般的な原則はこのようなものです

この関数により、get関数により、プログラムはcommonsモジュールでinpというメンバーを見つけることができます。

これは動的なプロセスです


これは、文字列ベースのドライブモードであるpythonのリフレクションですが、まだうまく機能していません。これはよくある質問です。ユーザーから渡されたstrが一致しない場合はどうなりますか?

これは改善されたコードです

hasattr関数を介して、関数内に対応する文字列があるかどうかを判別するために使用されます


したがって、この例は、同じディレクトリ内で相互にガイドすることです。グローバルである場合はどうなりますか?

コードは次のようにリファクタリングされます

あなたが書いたものを分析する

まず、インポートステートメントの行を定義しなかったことがわかります

inpの形式は、WebフレームワークのURLアドレスをシミュレートするcommons / homeの形式として定義されます。

あなたは一度エラーを見ることができます

このコード行を見てください

ユーザーの入力が処理されるため、2つの文字列が取得され、それぞれモジュール変数と関数変数に保存されます。

次に、モジュール変数に保存されている文字列と同じ名前のモジュールをプログラムにインポートさせます。

以降の手順は前と同じです。

Recommended Posts

Pythonの文字列反映メカニズム