Pythonの変数アノテーション
流行は「とにかく発言すること」だ
最近のプログラミング言語(KotlinとかGoとか)は、とにかく宣言することを大事にしています。
RubyとかPythonみたいに、ちょっと前までは「C/C++とかの宣言なんて面倒じゃんね。コンパイラー/インタープリターに推測させようぜ」という機運だったのに。
どうやら、「この変数/関数、何言ってるのか/何返すのか分かんないよね? じゃあ、宣言させた方が良いよね!?」というのが昨今の流行らしい。
ちなみに関数(函数)という言葉は英語の「function」が語源らしい。中国語(普通話)のピン音「Hánshù」も確かに音が似てますね。高校時代、数学教師が「箱(函)の中にモノを入れて出てくる機能を持つ」と言っていましたが、どうやら違うらしいです。
ということで、ついにPythonでも3.0から書くことができるようになりました!
例がこちら。
def fn(a: int) -> int:
return a ** 2
if __name__ == '__main__':
a_int : int = 12
b_float: float = 6.23
print(fn(a_int)) # 144
print(fn(b_float)) # 38.812900000000006
良い点は、「何を変数として入れるべきか分かる!」ということ。
なるほど。Pythonの場合は変数の後ろに型を書くらしい。C/C++とは違うんだね。
でもダメな点としては、「別に型指定してくれてないじゃん」ということ。
例の通りでは、int型でアノテーションしているけど、呼び出すときにfloat型でも勝手に動作してしまいます。
まあ、アノテーションというのは、型を縛り付けるためのものじゃなくて、ただのコメント文みたいなものなので、そうなってしまいます。
そう遠くない未来に型を縛り付けるようになってくれると、ムダな破壊とかが起こらなくなって嬉しいのですが……。
- 前の記事
PyQtを使ってみる 2019.10.11
- 次の記事
Cotoha API を使ってみた 2019.10.28