今回はまじめに
最近のPythonの文法をまとめてみました。
解説動画はこちら
さて最近のPythonの文法について
しばらく触れていなかったので
少し解説していきたいと思います。
今回はGoogle Colabを使用しているので
そのバージョンである3.10までの内容です。
文字列のフォーマット指定
f"文字列{変数}"
で文字列にデータを差し込みすることができます。
フォーマットの指定もできます
通常の辞書型では最初にキーが存在しないと値を操作できません
defaultdictの場合は初期値を決められるので
コードを省略できます。
最近のPythonの文法をまとめてみました。
解説動画はこちら
さて最近のPythonの文法について
しばらく触れていなかったので
少し解説していきたいと思います。
今回はGoogle Colabを使用しているので
そのバージョンである3.10までの内容です。
文字列のフォーマット指定
f"文字列{変数}"
で文字列にデータを差し込みすることができます。
# 昔のフォーマット
name = "フリーザ"
hourly = 530000
text = "{0} : 私の時給は{1}円です。".format(name, hourly)
print(text)
# Fフォーマット
name = "フリーザ"
hourly = 530000
text = f"{name} : 私の時給は{hourly}円です。"
print(text)
フリーザ : 私の時給は530000円です。フォーマットの指定もできます
{変数:指定文字列}
{変数:,} : 3桁区切り
{変数:.2f} : 小数点以下の指定(この場合は2桁)
# Fフォーマット name = "フリーザ" name2 = "ザーボン" hourly = 530000 hourly2 = 2980.2983 text = f"{name} : 私の時給は{hourly:,}円です。" print(text) text2 = f"{name2} : 私の時給は{hourly2:.3f}円です。" print(text2)
defaultdict
存在しないキーのデフォルト値を指定できます
通常の辞書型では最初にキーが存在しないと値を操作できません
# キーを初期化代入する必要がある d = {} for key in "aabbbc": if key not in d: d[key] = 0 d[key] += 1 print(d)
defaultdictの場合は初期値を決められるので
コードを省略できます。
# defaultdictの場合 from collections import defaultdict d = defaultdict(int) for key in "aabbbc": d[key] += 1 #print(d) print(d["a"])2
関数の結果をキャッシュ
functools.lru_cacheを用いると
同じ引数の関数の結果をキャッシュでき
再帰の計算などが早く行えるようになります。
圧倒的に早くなります。
アンパック演算子
*を用いて変数への複数代入を行う
1 , 2 , [3,4,5,6]
WITH構文で複数ファイルのコンテキスト
with open(ファイル名) as 変数, open(ファイル名) as 変数 ... :
いつの間にか便利な機能が追加されていて
業務でも捗っている感じになっていました。
文法の知識は定期的にアップデートしていかないと
もったいないですね
今回は最近のPython文法についてでした
それでは。
functools.lru_cacheを用いると
同じ引数の関数の結果をキャッシュでき
再帰の計算などが早く行えるようになります。
# キャッシュ無し def fibonacci_old(n): if n < 2: return n return fibonacci_old(n-1) + fibonacci_old(n-2) print(fibonacci_old(30))msレベル
# キャッシュあり from functools import lru_cache @lru_cache(maxsize=None) def fibonacci_cache(n): if n < 2: return n return fibonacci_cache(n-1) + fibonacci_cache(n-2) print(fibonacci_cache(100))usレベル
圧倒的に早くなります。
アンパック演算子
*を用いて変数への複数代入を行う
a, *b, c = [1,2,3,4,5,6] print(a, b, c) a, b, *c = [1,2,3,4,5,6] print(a, b, c)1 , [2,3,4,5] , 6
1 , 2 , [3,4,5,6]
ウォルラス演算子
:= で変数への代入と評価を同時にできるようになります
(a:=2) >= 2True
WITH構文で複数ファイルのコンテキスト
with open(ファイル名) as 変数, open(ファイル名) as 変数 ... :
# ファイルを作っておく import random import string for name in ["a","b","c"]: with open(name+".txt","w") as _w: text = ''.join([random.choice(string.ascii_lowercase) for i in range(10)]) _w.write(text) # with構文 with open("a.txt") as _a, open("b.txt") as _b, open("c.txt") as _c: print(_a.read()) print(_b.read()) print(_c.read())
match文
3.10でmatch文が導入された
他の言語でいうcase文ですね
match 条件:
case パターン:
return 戻り値
case パターン:
return 戻り値
# match文 def http_error(status): match status: case 400: return "ダメっすねー" case 404: return "見つからねっす" case 418: return "なんでしょね" case _: return "何言ってるか分かんねっす" http_error(404)見つからねっす
いつの間にか便利な機能が追加されていて
業務でも捗っている感じになっていました。
文法の知識は定期的にアップデートしていかないと
もったいないですね
今回は最近のPython文法についてでした
それでは。