バックナンバー
今日は短めですが、少しずつでもやっていこうと思います。
写経メインでサクッと。
累積代入文
>>> spam = 10
>>> spam += 100
>>> spam
110
>>> spam -= 60
>>> spam
50
>>> spam *= 10
>>> spam
500
>>> spam /= 2
>>> spam
250.0
>>> spam //= 3
>>> spam
83.0
>>> spam %= 10
>>> spam
3.0
>>> spam **=4
>>> spam
81.0
# ビット演算
>>> spam = 1024
>>> spam >>= 2
>>> spam
256
>>> spam <<= 2
>>> spam
1024
>>> spam = 0b11110000
>>> spam
240
>>> spam &= 0b00001111 # ビット論理積
>>> spam
0
>>> spam = 0b11110000
>>> spam ^= 0b00111100 # ビット排他的論理和
>>> spam
204 # 0b11001100
>>> spam = 0b11110000
>>> spam |= 0b00001111 # ビット論理和
>>> spam
255 # 0b11111111
変数名はかなり自由度が高い
# こんなこともできるし(別にやりたくないけど)
>>> スパム = 10
>>> def ハム(卵):
... return 卵 * 3
...
>>> ハム(スパム)
30
# これもあり
>>> π = 3.14
>>> V = A * Ω
# 大文字と小文字は区別される
>>> spam = 10
>>> Spam = 20
>>> spam
10
>>> Spam
20
# 以下の変数名は全て有効
>>> _spam = 1
>>> スパム = 1
>>> 卵 = 1
>>> Spam = 1
# 以下の変数名は全て無効
>>> $pam = 1 # 記号始まり
>>> 1スパム = 1 # 数値始まり
>>> 1spam = 1 # 全角数値始まり
>>> スパム。 = 1 # 句読点はNG
# 変数名として使えるか判定することもできる
>>> 'Spam'.isidentifier()
True
>>> '♪'.isidentifier()
False
# ただし、名前はUnicode標準の正規化形式KCに正規化されるのでこうなる 関数名も同様
# 要するにやらないほうがいい
>>> スパム = '半角'
>>> スパム = '全角'
>>> print(スパム)
全角
>>> print(スパム)
全角
or
# orは「真」の値が返ってくる
>>> 1 or 0
1
>>> 0 or 2
2
>>> 0 or 0.0
0.0 # どちらも「偽」の場合は右辺の値が返ってくる
>>> 1 or 2
1 # どちらも「真」の場合は左辺の値が返ってくる
# この時、「2」は評価すらされていない(この評価省略を「ショートサーキット」と呼ぶ)
# 実用例
>>> if x: # このif文は
>>> z = x
>>> else:
>>> z = y
>>> z = x or y # こう書ける
and
>>> 1 and 2
2 # 両方「真」なら右辺の値が返ってくる
>>> 0 and 1
0 # どちらかが「偽」なら「偽」の値を返す(ここでも1はショートサーキットされている)
>>> 1 and 0.0
0.0 # どちらかが「偽」なら「偽」の値を返す
not
# notはbool型の値を返す
>>> not 1
False
>>> not 0
True