Python実践入門 3章 制御フロー
classとかとりあえず作っておいて、中身は後からってときは、pass文やdocstringでインデント入れとくこと
code: 3.py
# これだけだとエラー
class Hoge():
# 以下のようにパスを入れる
class Hoge():
pass
Pythonは定数がない、全て変数になる PEP 8で
変数は小文字で、定数は大文字でやるというのを推奨している。
esaka.icon 言語機能として定数もたないのやっぱ微妙に感じる
Docstringとコメントの使い分け
Docstringは特定の場所(モジュール・関数の冒頭、クラス・メソッド定義の箇所)で使うとツールから利用されたりするので、これらの場所ではなるべくdocstringでコメントを書こう
Pythonはswitchがないよif elseだけ
真偽値でFalseになるもの
None, False,数値型の0, コンテナオブジェクト(文字列、リスト、マップ)の空オブジェクト, メソッド__bool__(), __len__()がFalseを返すもの
==とis, !=とis notの違い
==, !=は等価性(値が等しいかどうか)を判定し、is, is notは同一性(オブジェクトが同じかどうか)を判定する
大体が==, !=を使う、isを使うのはNoneとの比較の時くらい
in, not in
特定のコンテナオブジェクト内にある要素が含まれいるかどうかを判定できる
ちなみに辞書型の場合はkeyで判定するよ
for文
code: for.py
for i in range(10):
print(i)
word = 'word'
for i, v in enumerate(word):
print(f'{i}番目の文字は{v}'
code: for-else.py
for i in range(10):
print(i)
else:
# 最後に1回だけ実行したい処理
for文は変数のスコープにならないので、for内で定義された変数は後から参照できてしまう。
Python3.8からセイウチ演算子(:=)が入った。
code: walrus.py
def hoge(goods):
if item := random.choise(goods):
return item
else:
return 'MISS'!!
with文
code: with.py
with <withに対応したオブジェクト> as 変数:
任意の処理
あらかじめ定義されたクリーンアップ処理をブロックを抜ける直前に実行してくれる
goでいうdeferに近い
ファイルクローズとか