Keep on moving

あんまりまとまってないことを書きますよ

pep572で遊ぶ そして mypyはまだ対応してないっぽい

Python3.8a0がリリースされましたね。

www.python.org

さっそく 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の拡張がでるかもなので、もう少し調べてみます。 ひさびさに調べて結果がでなかったことをブログに書いたな....