- ループ処理中break文が実行されると、反復処理を中断(それ以降のループ処理を行わない)し、ループから抜ける。
for x in range(5):
if x == 3:
break
print('x = {0}'.format(x))
- ループ処理中continue文が実行されると、その後のブロック内の処理を行わず、ループ文冒頭に戻る。
for x in range(5):
if x == 3:
continue
print('x = {0}'.format(x))
- 何もしない(ということの明示)。
- 詳細な記述は後回しにし、形だけ揃えておきたい(実行できるようにしておきたい)場合に使うことが多い。
def add(x, y):
pass
- 定義した名前(変数や関数)を明示的に削除したい時に用いる。
- e.g., 大規模なデータセットを読み込んで処理していた。その後、処理は終わったが、プログラム自体はまだ継続している。メモリ上に不要なデータセットが残ってると無駄にリソースを食ってしまうから消そう。
a = [-1, 1, 66.25, 333, 333, 1234.5]
del a[0]
print(a)
# -> [1, 66.25, 333, 333, 1234.5]
del a
print(a)
# -> NameError: name 'a' is not defined
-
__name__ は「モジュール名」が設定される。
- case 1)
python3 hoge.pyのように実行すると、モジュール名「__main__」が代入されている。 - case 2)
python3とインタプリタを起動すると、「__main__」が代入されている。 - case 3)
import hogeのようにモジュールを読み込むと、hoge.__name__ の中身は「hoge」が代入されている。- importすると__name__にはモジュール名が代入されている。デフォルトの __main__ にはならない。このため、case1, case2と、case3とで実行結果が異なるケースがある。
- 何故こうなっているのか?
- 「スクリプトファイルを実行する場合(上記のcase 1)」と「モジュールとして利用する場合(上記のcase 3)」とで、動作を変えたいから。
- 例えば、random.randint()を使って乱数生成したことを振り返ってみよう。
- 「import random」しただけで、プログラムが実行されたら邪魔じゃない?(上記case 3に相当)
- 例えば、random.randint()を使って乱数生成したことを振り返ってみよう。
- 「スクリプトファイルを実行する場合(上記のcase 1)」と「モジュールとして利用する場合(上記のcase 3)」とで、動作を変えたいから。
- case 1)
-
コード例: hoge.py
# コード例 (hoge.py という名前で保存しよう)
if __name__ == '__main__':
print('__name__ の中身は __main__ でした!')
- 実行例
# case 1: 普通にプログラムを実行した際の動作。
oct:tnal% python3 hoge.py
__name__ の中身は __main__ でした!
# case 2:
oct:tnal% python3
>>> __name__
'__main__'
# case 3: hogeをimportしても、print文が実行されていない。
>>> import hoge
>>> print(hoge.__name__)
'hoge'