Pythonのインタプリタ基本クラス
Pythonのインタラクティブモードは、REPL(読み取り-評価-印刷-ループ)の原則に基づいて機能します。 Pythonの標準ライブラリのコードモジュールは、Pythonスクリプト内からREPL環境をセットアップするためのクラスと便利な関数を提供します。
コードモジュールでは、次の2つのクラスが定義されています。
InteractiveInterpreter: このクラスは、解析とインタプリタの状態(ユーザーの名前空間)を処理します
InteractiveConsole: インタラクティブなPythonインタープリターの動作を厳密にエミュレートします。
モジュールの2つの便利な機能は次のとおりです。
interact(): read-eval-printループを実行するための便利な関数。
compile_command(): この関数は、Pythonのインタープリターメインループ(REPL)をエミュレートするプログラムに役立ちます。
インタラクティブインタプリタメソッド
runsource(): インタプリタでいくつかのソースをコンパイルして実行します。
runcode(): コードオブジェクトを実行する
インタラクティブコンソールメソッド:
InteractiveConsoleクラスはInteractiveInterpreterのサブクラスであるため、上記のメソッドは自動的に使用可能になります。さらに、次のメソッドが定義されています。
interact(): インタラクティブなPythonコンソールを厳密にエミュレートします。
push(): ソーステキストの行をインタプリタにプッシュします。
resetbuffer(): 未処理のソーステキストを入力バッファから削除します。
raw_input(prompt ="")
プロンプトを作成し、デフォルトでsys.stdinから行を読み取ります
例
import code x = 10 y = 20 def add(x,y): return x+y print (add(x,y)) code.interact(local=locals()) print (x,y) print (add(x,y))
上記のコードでは、2つの変数が定義され、関数に渡されます。インタラクティブコンソールを呼び出します。引数local=locals()を使用すると、インタープリターループ内のデフォルトとしてローカル名前空間を使用できます。
変数に異なる値を割り当て、Ctrl + Dを押してコンソールを終了すると、それらの値が関数に渡されます
出力
addition= 30 Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> x=100 >>> y=200 >>> now exiting InteractiveConsole... 100 200 addition = 300
-
Pythonグローバルインタープリターロック(GIL)とは何ですか
この記事では、Pythonグローバルインタープリターロック(GIL)とは何ですか。 これは、Pythonインタープリターの可用性を複数のスレッドに同時に抵抗するロックまたは障害です。 GILは、Python3.xの障害/問題として識別されます。または、マルチスレッドアーキテクチャではマルチスレッドが許可されていないため、以前のバージョンです。 なぜ導入されたのですか? Pythonは、自動ガベージコレクションの概念をサポートしています。オブジェクトの参照カウントがゼロに達するとすぐに、メモリがクリーンアップされ、使用できるようになります。 >>> import sys &
-
Pythonでクラスを定義する方法は?
Pythonでは、ほとんどすべてのコードがクラスを使用して実装されています。プログラマーはクラスを使用して、関連するコードをまとめます。これは、オブジェクト指向構造のコレクションであるキーワード「クラス」を使用して行われます。 クラスは、オブジェクトを作成するためのテンプレートです。オブジェクトにはメンバー変数があり、それらに関連付けられた動作があります。 Pythonでは、クラスはキーワードclassによって作成されます。 たとえば、関数のない単純な空のクラスを作成しましょう。 >>> class Cars: ... pass キーワードclassの後には、最初の文字