Pythonのpass文の凝った使い方
- 作成日: 2021-07-27
- 更新日: 2023-12-24
- カテゴリ: Python
Pythonのpass文の凝った使い方
Pythonには何もしない命令、pass文があります。
Pythonでは何も処理を書きたくない場合にこのpass文を書きます。
「なにもしない」という意味の文で、意外とよく使われる文の1つです。
結論から言うとpass
文は↓のように書きます。
pass
🦝 < 単純やね
この記事ではPythonのpass文について↓を見ていきます。
- pass文の書き方
- pass文の使い道
- if文とpass文
- for文とpass文
- while文とpass文
- 関数とpass文
- クラスとpass文
- 例外処理とpass文
pass文の書き方
pass
文は↓のような構造になっています。
pass_stmt ::= "pass"
非常に単純な文で、「pass
」と書くだけで成立します。
コードにすると↓のようになります。
pass
pass文はその文脈でなにもしない命令です。
たとえば↓のようなコードも合法です。
print('Hello')
pass
print('World')
↑のコードを実行すると↓のような結果になります。
Hello
World
↑のようにpass
文はなんら他のコードに影響を与えません。
本当に何もしない命令です。
このpass
文に何か使い道があるのでしょうか?
pass文の使い道
pass
文の使い道とは、Pythonの文法の特徴と合致します。
つまりPythonの文法上、pass
文が必要になるということです。
Pythonはインデントでコードの階層を表現しています。
そのためif
文やfor
文などで空っぽのif
文やfor
文を書くということができません。
インデントで空っぽを表現しようとしても、Pythonがその意味を認識してくれないからです。
そこで「ここは空っぽですよ」という表現に使われるのがpass
文です。
「なにもしない」という存在が文の中にあることで、空っぽのif
文やfor
文を表現できるようになります。
if文とpass文
if
文でpass
文を使う例です。
↓のようにコードを書きます。
if 1 == 1:
pass
↑の場合、if
文の条件式1 == 1
は真なのでif
文の中身が実行されます。
if
文の中身はpass
になっているので、if
文が真になっても何も実行されません。
if 1 == 0:
print('同じ')
else:
pass
↑の場合は、if
文の条件式は1 == 0
です。これは真になることはありません。
そのためelse
の内容が実行されますが、pass
文が書かれているためelse
が実行されても何も起こりません。
for文とpass文
for
文とpass
文の組み合わせです。
↓のようなコードを書きます。
for i in range(4):
pass
↑の場合、for
文は0
から4
より下まで、つまり4回回ります。
しかしfor
文の中にはpass
文が書かれているだけなので、なにも実行されません。
注意したいのはfor
文の中身は何もありませんが、for
文自体は実行されるということです。
つまりカウント変数i
は0
から4
より下までカウントされるということになります。
for i in range(4):
print(i)
else:
pass
↑の場合、for
文の中身はprint(i)
になっているので、カウント変数i
が出力されます。
for ~ else
のelse
はfor
文が最後まで完了したときに実行されますが、この中にはpass
文が書かれているだけなので、なにも実行されません。
↑のコードを実行すると↓のような結果になります。
0
1
2
3
while文とpass文
while
文とpass
文の組み合わせです。
↓のようなコードが考えられます。
while True:
pass
↑のコードを実行すると、無限ループになります。
while
文の条件式はTrue
なので、while
文の中身が実行されます。
中身はpass
になっているので、実際には何も実行されません。
しかし、while
文の条件式はTrue
であり続けるので「なにもしない」ループが延々と実行されます。
このようなループを無限ループやビジーループなどと言います。
関数とpass文
なにもしない関数というのもあります。
これもpass
文を組み合わせて書きます。
たとえば↓のようにです。
def func():
pass
↑のfunc
は関数ですが、関数の中身はpass
文が1行書かれているだけです。
この関数は何もしないので、呼び出しても他のコードに影響を与えることはありません。
クラスとpass文
クラスにpass
文を書くことも出来ます。
↓のようにです。
class Empty:
pass
↑の場合、クラスEmpty
は何の属性も持たない空のクラスです。
__init__()
などのメソッドも何も持っていません。
空のクラスなんて何に使うのでしょうか?
活用例の1つがネームスペースとして使う方法です。
class humans:
pass
humans.taro = Taro()
humans.kenji = Kenji()
↑のようにhumans
というネームスペースを作っておいて、そのネームスペースの属性にいろいろ保存します。
このようにすると複数のオブジェクトを1つのネームスペースにまとめることが出来ます。
例外処理とpass文
例外処理ではpass
がよく使われます。
たとえば例外を握りつぶしたいときです。
例外が発生しても、その例外を無視して処理を続行したい場合などにpass
文は使われます。
try:
1 / 0
except ZeroDivisionError:
pass
↑の場合、1 / 0
で0
除算エラーが発生しています。
これは数は0
で割ってはいけないというエラーです。
そのためZeroDivisionError
が発生してますが、except
の中身はpass
文だけになってます。
そのため例外が発生しても特に何か行われるということはありません。
このように例外処理とpass
文を組み合わせると、例外を握りつぶすことが可能です。
しかしあまり頻繁に例外を握りつぶしていると、設計に難が出てきますのでほどほどにしておきましょう。
おわりに
今回はPythonのpass
文について見てみました。
pass
文は比較的に利用頻度の高い文の1つと言えます。
🦝 < 次は君の番だよ
🐭 < passします