python sys.exit()、break、 exit()、quit()、os._exit()、returnの違い

5130 ワード

1.sys.exit()関数の説明:標準的なシステムを終了する方法.exit([status])はシステムを終了し、SystemExit(status)異常を放出します.statusまたは転送Noneを渡さない場合は、デフォルトでは0とします.伝達されたstatusが数字であれば,システムの終了コードとみなされる.転送されたstatusが他のデータ型である場合、statusは印刷され、システムの終了コードは1である.
異なるtry...except....異常をキャプチャしtracebackで追跡するsys.exit()メソッドが投げ出す異常は発見されない.しかし、try...except....例外を投げ出すと、システムは終了せず、次の文を実行します.したがって、システムを終了するにはsysをexit()メソッドをry...except....中
(1)この3つの方式sys.exit()、sys.exit(0)、sys.exit(None)は同じ意味で、終了コードを返さない
import sys
import traceback
def test():
    print "test in"
    sys.exit()
    print "test out"
try:
    test()
except Exception as e:
    print e
    traceback.print_exc()
print "ending"

この場合、出力は次のようになります.
test in

原因はsysです.exit()メソッドで投げ出された例外はExceptionクラスではないので、例外情報を印刷することはできません.異常を追跡し、異常情報を印刷する必要がある場合は、次のコードで異常をキャプチャする方法を変更する必要があります.
import sys
import traceback
def test():
    print "test in"
    sys.exit()
    print "test out"
try:
    test()
except:
    traceback.print_exc()
print "ending"

出力結果:
Traceback (most recent call last):
  File "E:\python_program\Test_python2_7\src\exit.py", line 16, in 
test in
    test()
  File "E:\python_program\Test_python2_7\src\exit.py", line 13, in test
    sys.exit()
SystemExit
ending

(2)パラメータが0より大きい数値の場合sys.exit(n)
import sys
import traceback
def test():
    print "test in"
    sys.exit(11111111)
    print "test out"
try:
    test()
except:
    traceback.print_exc()
print "ending"

出力結果には、送信された数値が含まれ、終了コードとして使用されます.
Traceback (most recent call last):
  File "E:\python_program\Test_python2_7\src\exit.py", line 15, in 
test in
ending
    test()
  File "E:\python_program\Test_python2_7\src\exit.py", line 12, in test
    sys.exit(11111111)
SystemExit: 11111111

(3)パラメータの他のデータ型の場合、dict、list、set、strなどを含むsys.exit(other_type)出力結果は次のとおりです.
SystemExit: {'key': 'value'}
  
SystemExit: ['value1', 'value2']
  
SystemExit: set(['value2', 'value1'])
  
SystemExit: string

2.os._exit(n)メソッド使用環境:Unix,Windowsシステムで使用できます.役割:プロセスを終了するときにクリーンアッププロセッサを呼び出さず、stdioバッファも洗浄せず、終了コードはnである.Noteがシステムを終了する標準的な方法はsysである.exit(n)._exit()は、通常、サブプロセスを終了するために使用されます.この方法は異常を投げ出すことなく,直接システムを終了する.
3.exit()およびquit()メソッドquit([code=None])exit([code=None])は、主にインタラクティブ解釈器shellを終了するために使用され、プログラムで使用されるべきではないが、プログラムで使用することもできる.プログラムでは、異常をキャプチャする場合、SystemExit異常と終了コードを投げ出すこともできます.キャプチャしないと直接終了します.sys.exit()の違いは、exit(0)の終了コードが0でsysであることである.exit(0)は終了コードを出力しません.4.breakは最近のループから飛び出した.returnは関数を飛び出し、結果を返します.