他のコメンターが指摘しているように、関数は return を使用してスクリプトのどこからでも救済するオプションを提供します。これがおそらく最良の選択です。
技術的には、sys.exit は SystemExit 例外を発生させます。通常の try-catch を使用して SystemExit をキャッチし、必要に応じて終了を効果的に「キャンセル」できます。これは、低レベルの関数が適切な決定を下すのに十分なコンテキストを持っていない可能性があるが、高レベルのコードがステップインしてクリーンアップする可能性がある、より複雑なコードがある場合に便利です。
C/C++ や他の多くの言語の人々は、この戦術に悩まされていますが、Python ランドでは珍しくありません。一般に、フロー制御に例外を使用することはお勧めできませんが、他の人の関数を使用している場合や、小さなスクリプトを組み合わせて大きなアプリケーションを作成している場合は、便利な場合があります。
ところで、コントロールがスクリプトの一番下まで落ちた場合、とにかく「なし」を返すことを忘れないでください。したがって、あなたの例では:
if x != 20:
query = raw_input("X does not equal 20. Do you want to continue? (Y/N)")
if query in ['y', 'Y']:
// do something
と同じです
if x != 20:
query = raw_input("X does not equal 20. Do you want to continue? (Y/N)")
if query in ['y', 'Y']:
// do something
else:
sys.exit()
2番目の周りで試行/キャッチできるが最初の周りでキャッチできないという事実を除いて...ただし、あなたの例は、リターンがより良いエスケープルートであるより大きなサンプルから切り取られていると思います