Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでモジュールをリロードしますか?


reload()-以前にインポートされたモジュールまたはロードされたモジュールをリロードします。これは、インタラクティブセッション中にテストスクリプトを繰り返し実行する場合に便利です。コードに変更を加えた場合でも、開発中のモジュールの最初のバージョンが常に使用されます。そのシナリオでは、モジュールがリロードされていることを確認する必要があります。

reload()に渡される引数は、以前に正常にインポートされたモジュールオブジェクトである必要があります。

構文

import importlib
importlib.reload(sys)

>>> import sys
>>> import importlib
>>> importlib.reload(sys)
<module 'sys' (built-in)>

ただし、以前にインポートされていないモジュールをリロードしようとすると、エラーが発生する可能性があります。

>>> import importlib
>>> importlib.reload(sys)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
importlib.reload(sys)
NameError: name 'sys' is not defined

reload()を実行するときに理解すべきいくつかのポイント-

  • Pythonモジュールのコードが再コンパイルされ、モジュールレベルのコードが再実行され、モジュールを最初にロードしたローダーを再利用することで、モジュールのディクショナリ内の名前にバインドされる新しいオブジェクトのセットが定義されます。ただし、モジュールのinit関数は再度読み込まれません

  • 古いオブジェクトは、参照カウントがゼロになった後でのみ再利用されます。

  • モジュール名前空間の名前は、存在する場合は新しいオブジェクトに変更されます。

  • 古いオブジェクトの他の参照(モジュールの外部の名前など)は、必ずしも新しいオブジェクトを参照しているわけではなく、必要に応じて、それらが発生する各名前空間で更新する必要があります。


  1. Pythongetpassモジュール

    Pythonの標準ライブラリのgetpassモジュールで定義されている2つの関数があります。これらは、ユーザーの資格情報を検証した後にのみ端末ベースのアプリケーションを実行する必要がある場合に役立ちます。 getpass() この関数は、ユーザーにパスワードの入力を求めます。デフォルトでは、ユーザーが端末に入力したキーはエコーされません。また、端末に表示されるデフォルトのプロンプトは「パスワード」であり、パラメータとして文字列を指定することでカスタマイズできます。 次の例では、PythonプロンプトはWindowsのコマンドプロンプトターミナルから呼び出されます。入力したパスワードは端末

  2. Pythonの他のモジュールで一意のオブジェクトにアクセスできるようにする方法は?

    これは基本的にシングルトンオブジェクトのアイデアです。したがって、オブジェクトをインスタンス化し、異なるモジュール間でそれにアクセスしたい場合は、2つのアプローチを使用できます。最初に、その変数を、変数名でインポートしたモジュールに割り当てます。たとえば、オブジェクトmyobjがインスタンス化されていて、それをモジュールBで使用したい場合は、次のように実行できます。 >>> import B >>> B.myobj = myobj モジュールB内では、他のグローバルプロパティと同じように使用します。もう1つの方法は、必要に応じてこのオブジェクトをパラメータ