#はじめに
†ちゃお†…
この記事は"闇の魔術に対する防衛術 Advent Calendar 2019"の1日目の記事です。
明日は「寿司打の†限界†を目指して WebGLのOCR」と言うタイトルでL_e_k_oさんです。
みんな集まれー!
みんなー!Pythonの型って調べたことあるー?
みんなはある変数の型を知りたいときってどうしてるかなー?
👂✋
そうだね!、type関数だね!
じゃあintの型って知ってるかな?
みんな、「えー型なのに型?」ってなってるよね?じゃあ調べてみよう!
type(int)
このコードを実行するとどうなるかな?
多分、こんな結果が帰ってくるよね?
>>> type(int)
<class 'type'>
そう!intの型はtype型だったんだ!
同じようにfloatやstrもtype型だよ!
同じように次はrangeの型を調べてみよう!
みんな、「えー関数なのに型?」ってなってるよね?さあ、どうなるかな?
>>> type(range)
<class 'type'>
なんと!rangeはtype型を持ってるんだ!
じゃあ自前で関数を定義するとどうなるかな?
def test():
pass
type(test)
試しにやってみよう!
>>> type(test)
<class 'function'>
Pythonでは関数もtype型やfunction型のオブジェクトなんだね!
じゃあ最後にtypeの型を調べてみよう!
「流石にtypeは型を持たないでしょ」だって?試しに確認してみよう!
>>> type(type)
<class 'type'>
なんとtypeの型はtypeだったんだ!すごいね!
そう!Pythonは型や関数でも型を持ってるんだ!
でもなんでPythonは型や関数でも型を持ってるんだろう?
それはPythonは何でもオブジェクトだからなんだ!型や関数もオブジェクトだから型を持ってるんだね!
型の依存関係を知ろう!
じゃあこれらの型ってどういう関係なんだろう…
後で書く
まとめ
静的型付けのPythonをくれ