Skip to content

Latest commit

 

History

History
106 lines (84 loc) · 3.86 KB

File metadata and controls

106 lines (84 loc) · 3.86 KB

これまでの授業解説では抜けてた補足


  • ループ処理中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に相当)
  • コード例: 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'