【Python】python実行環境


pythonでは、外部プログラムを実行する方法がいくつかあります.特定のシーンには、現在のスクリプトの実行を続行したり、サブプロセスを作成して管理したり、外部コマンドまたはプログラムを実行したり、入力するコマンドを実行したり、ネットワークを介してコマンドを呼び出したり、コマンドを実行して処理する出力を作成したり、他のpythonスクリプトを実行したり、動的に生成されたpythonスクリプトを実行したりすることが含まれます.pythonモジュールをインポートし、その最上位レベルのコードを実行します.これらのシーンはpython実行環境に関連しています.次に、呼び出し可能なオブジェクトから説明します.
1、呼び出し可能なオブジェクト
pythonには、関数、メソッド、クラス、およびいくつかのクラスのインスタンスの4つの呼び出し可能なオブジェクトがあります.これらのオブジェクトの参照または別名は呼び出し可能であり、apply()、filter()、map()、reduce()などの関数プログラミングインタフェースを介して呼び出すこともできます.pythonには、組み込み関数、ユーザー定義関数、lambda式の3つの異なるタイプの関数オブジェクトがあります.メソッドは、組み込みメソッドとカスタムメソッドを含むクラスに関連付けられます.クラスは、クラスの呼び出し性を利用してインスタンスを作成できるという概念です.クラスのインスタンスはデフォルトでは呼び出せません.クラスを定義するときにcall()メソッドが実装されている場合にのみ、クラスのインスタンスが呼び出されます.
2、コードオブジェクト
文、賦値、式、さらにはモジュールなどの実行可能オブジェクトは、コードブロックを構成する一部であり、コードオブジェクトと呼ばれます.これらのコードを実行するには、まずバイトコンパイルされたコードに変換する必要があります.これが本当の実行可能オブジェクトであるためです.一般に、コードオブジェクトは、関数またはメソッド呼び出しの一部として実行されてもよいし、exec文または組み込み関数eval()で実行されてもよい.カスタム関数のfunc_のようにcodeプロパティは、コードオブジェクトです.
3、組み込み関数
pythonは、callable(obj):objが呼び出すことができるかどうかを判断するなど、実行可能なオブジェクトをサポートする組み込み関数を多数提供しています.compile(string,file,type):typeタイプからコードオブジェクトを作成します.fileはコードが格納されている場所で、通常は「」空の文字列に設定されます.typeはeval、singleまたはexecで、それぞれ評価式、単一実行可能文、実行可能文グループを表します.戻り値については、最初はeval()と組み合わせて使用され、後の2つはexecとともに使用されます.eval(obj,globals=globals()、locals=locals():objを評価し、objはコードオブジェクトにコンパイルされた式、または文字列式であり、グローバル、ローカルの名前空間を与えることができます.exec obj:objを実行し、単一のpython文または文の集合、すなわちフォーマットはコードオブジェクトまたは文字列であり、objはファイルオブジェクトであってもよい.input(prompt="):eval(raw_input(prompt=")に等しい)
__doc__
__name__
__self__
__module____doc__
__name__
func_code
func_defaults
func_globals
func_dict
func_doc
func_name
func_closure
         :
__doc__
__name__
__self____doc__
__name__
__module__
im_class
im_func
im_self

4、他のpythonプログラムを実行する
実行時刻には、別のpythonスクリプトを実行する方法がたくさんあります.最初のインポートモジュールでは、モジュールの最上位レベルのコード、すなわちインデントされていないコードが実行されます.インポートモジュールの副作用は、最高レベルのコード実行をもたらすことであり、execfile()はpythonスクリプトの内容を読み取ることもできますが、既存の実行環境でのみ実行できます.もう1つは、コマンドラインでpythonスクリプトを実行することです.2つの使いやすいコマンドラインパラメータがあります.「-c」パラメータは、pythonのインポートメカニズムにモジュールを自動的に検索してインポートすることができます.「-m」パラメータは「name」の値と同等です.
5、python以外のプログラムを実行する
pythonプログラムでは、バイナリ実行可能ファイル、他のshellスクリプトなど、すべての要件は有効な実行環境にすぎません.オペレーティングシステムによってpythonモジュールは異なりますが、osモジュールをインポートするだけでいいので、pythonは特定のオペレーティングシステムに基づいて正しいモジュールをロードします.os.System(cmd):プログラムcmdを実行し、cmdは文字列であり、プログラムの終了を待って、終了コードを返し、windowsの下では常に0である.os.popen(cmd,mode=’r’,buffering=-1):文字列cmdを実行し、実行プログラム通信ハンドルとしてクラスファイルオブジェクトを返し、デフォルトは読み出しモードとデフォルトシステムバッファである.os.fork():親プロセスと並列にサブプロセスを作成します.通常はexec*()とともに使用され、2回戻り、1回親プロセスに、1回サブプロセスに返します.os.exec*():exec*()ファミリーで、パラメータリスト、パラメータベクトルリスト、環境変数でファイル、コマンドを実行します.os.spawn*():spawn*()ファミリーで、新しいプロセスでコマンドを実行します.os.wait*():wait()はサブプロセスの完了を待機し、waitpid()は指定したサブプロセスの完了を待機します.osモジュールに加えてsubprocessも同様の作業を行うことができ、プロセス向けのモジュールである.関連するモジュールにはatexit,popen 2,commands,getopt,site,platformなどがある.
6、プログラムの実行終了
プログラムの実行が完了し、すべてのモジュールの最上位の文が実行された後に終了します.これはクリーンな実行です.pythonから早期に終了する必要がある場合が多いかもしれません.例えば、致命的なエラーや、実行を継続する条件を満たさない場合、pythonでは、エラーに対処する方法があります.sys.exit(status=0):直ちにプログラムを終了して呼び出しプログラムに戻り、この関数を呼び出すとSystemExit異常がトリガーされます.この異常はエラーと見なされない唯一の異常です.sys.exitfunc():デフォルトでは使用できませんが、sysが呼び出された場合に追加の機能を提供するために書き換えることができます.exit()は、解釈器が終了する前に、この関数を使用します.os._exit(status):この関数が提供する機能は、上の2つの関数とは逆に、クリーンアップを実行せずにpythonをすぐに終了します.os.kill(pid,sig):pidプロセスにsig信号を送信します.
7、関連モジュール
atexit:   python            
popen2:      os.popen     (                   ,  python2.4      ,  subprocess)
commands:      os.system     (                  ,         ,  python2.4      ,  subprocess)
getopt:                    
site:  site-specific    
platform:          
subprocess:  (           ,  os.system(),os.spawn*(),os.popen*(),popen2.*,command.*)