僕はあまり使うことはないんですが・・・
passとは「コードの形式上、どうしても何かを書かないといけない」
というときに記述する文であり、そのはたらきは「何もしない」です。。。
たとえばif-else文を作る時、
「if分岐に入ったときは○○の処理をしてほしいんだけど、
else分岐の場合は何もしなくていいんだよなぁ・・・」
という場合、else分岐の部分には何の処理文も必要ないのだけれど、
pythonコーディングの形式(約束)上、何かしらを書かなくてはいけない。
こんな時は
passと書いてあげれば「何もしない」という処理が実行されるのです。
ひょっとしたら、こんな感想を抱いた人がいるのでは?
「
passなんて何の役に立つの・・・?
だって、少し上に書いている
continueと同じことじゃない?
下のコードの実行結果を見れば一目瞭然ジャン!!」
<勘違い君が主張するコード>
for i in range(5):tabtabtabtabfor i in range(5):
tabif i==2:tabtabtabtabtabtabtabif i==2:
tabtabprint '2だよ'tabtabtabtabtabtabprint '2だよ'
tabelse:tatabtabtabtabtabtabtabelse:
tabtabcontinuetabtabtabtabtabtabtapass
たしかに、勘違い君の言っている通りですね。
上の2つのコードを実行すると、出力結果は全く同じです。
というわけで、上のようなシンプルなコードであれば
continueと
passは同じはたらきをしているように見えます。
でも、だまされないでください。
もう一回言いますね、だまされないでください!
では、何が違うのでしょうか?下に簡単に書いてみましょう。
○
continue・・・continue以下の処理をとばして次のループ(ループ変数)へ移行する
○
pass・・・「何もしない」という処理をする
これでもイメージがつかめない方は、下の2つのコードの出力結果を比べてみましょう。
コードの違いは
continueと
continueが違うだけで、そのほかは全く同じですよ。
<continueとpassのはたらきの違いを実感する>
for i in range(5):tabtabtabtabfor i in range(5):
tabif i==2:tabtabtabtabtabtabtabif i==2:
tabtabprint '2だよ'tabtabtabtabtabtabprint '2だよ'
tabelse:tatabtabtabtabtabtabtabelse:
tabtabcontinuetabtabtabtabtabtabtapass
tabif i==3:tabtabtabtabtabtabtabif i==3:
tabtabprint '3だよ'tabtabtabtabtabtabprint '3だよ'
tabelse:tatabtabtabtabtabtabtabelse:
tabtabcontinuetabtabtabtabtabtabtapass
上記コードの出力結果は
左側のコードだと
print '2だよ'
となりますが、右側のコードだと
print '2だよ'
print '3だよ'
となります。
ね、出力結果が変わったでしょ?
今回のコードのポイントは「1つのfor文の中に2セットのif-else文がある」ということです。
左側の
continueコードの場合、5行目のcontinueに出会った途端、以降の処理(以降のコード)は無視され
次のforループ変数へと移行してしまいます。
よって2つ目のif-else構文に処理が流れていくのは「if i==2」の処理の後だけで、それ以外は全く反映されないのです。
対して右側の
passコードの場合は、単に何もしないという処理を実行しただけで
強制的に次のループ変数へと移行することはありません。
ですので、プログラムはかならず2つのif-else文を流れていくのです。
これで
pass文の重要さも分かって頂けましたよね?
python-project