PEP 483を読む(続き7)
Pragmaticsってなんだ
語用論?でいいの?
- 型が期待されるところではNoneはtype(None)とみなされる
- 型エイリアスが使える
- 前方参照には文字列を使う
- デフォルト値としてNoneを指定すると、Optional型を指定したことになる
def foo(a: Bar = None)
ってなんかおかしくねと思ってたけどそういうことか
お行儀としてはOptionalと書くべきなんだろうか
それともPEPに書いてあるんだし堂々とa: Bar = None
でいいのか
- bounded形式で宣言することができる
T = TypeVar('T', bound=complex)
と書くとTはcomplexまたはその部分型になれるらしい
PEP 484に書いてあった
- コメントに型宣言を書ける
ところどころに出てくるけど、変数の型を宣言するのに使ってるみたいだから
PEP 526が実装された今となっては不要?
それとも使いどころがある?
cast(T, obj)
で型をキャストできる- ほかはPEP484を見て
type.pyで定義済みの型とプロトコル
- collections.abcのすべて(SetはAbstractSetになっている)
- Dict、List、Set、FrozenSetとあと少し
- re.Pattern[AnyStr]、re.Match[AnyStr]
- io.IO[AnyStr]、io.TextIO 〜 io.IO[str]、io.BinaryIO 〜 io.IO[bytes]
AnyStrはTypeVar('AnyStr', str, bytes)
のことだけど
サンプルじゃなくてそういうのがあるんだな
PEP 483おしまい!