pep572で遊ぶ そして mypyはまだ対応してないっぽい
Python3.8a0がリリースされましたね。
さっそく PEP 572 で遊んでみました。
TL;DR
- PEP572をざっくり触った
- mypyはまだPEP572に対応していない
ざっくり使い方
# current env_base = os.environ.get("PYTHONUSERBASE", None) if env_base: return env_base # Improved: if env_base := os.environ.get("PYTHONUSERBASE", None): return env_base
こんな感じで if
とか while
内で変数に格納しつつ条件をつけられるようになった感じです。
## Type Hintsの当て方
残念ながら現在のmypyバージョンでは pep 572に対応していません(泣)
将来的には対応するんじゃないかなーと思います。PEP-0526 ではこんな記述があります
Only single assignment targets and single right hand side values are allowed. In addition, one cannot annotate variables used in a for or with statement; they can be annotated ahead of time, in a similar manner to tuple unpacking:
a: int for a in my_iter: ...
予想ですが、以下のようにtype hintsがかけるようになる可能性があるかもです。
env_base : str if env_base := os.environ.get("PYTHONUSERBASE", None): return env_base
PEP526の拡張がでるかもなので、もう少し調べてみます。 ひさびさに調べて結果がでなかったことをブログに書いたな....