或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

[Python]初めてのPython 第3版 6章 ダイナミックな型付け

初めてのPython 第3版

初めてのPython 第3版

6.1 型宣言がないPythonのところ

前もって変数の型を宣言しなくてよいというのは、その文だけプログラミングが簡単になる、ということです。特にプログラミングの経験の浅い人にとってはメリットと言えます。

一理あるんだけど、同意しかねるなぁ。たしかに一理あるんだけど。

例えばこういうこと

>>> a = 1
>>> b = '1'
>>> print a
1
>>> print b
1
>>> a == b
False
>>> 

aはintで、bはstr。print分で出力してみると、両方とも確かに1なんです。printする分には数値の1だろうが、文字列の1だろうがどっちでもいい場合もある。だけど、aとbを比較すると、同等ではないわけで。aとbを演算するにも型が違うから演算出来ない。

例えば、数値として演算するとしたら以下のようにキャストしてやる必要がある

>>> a + int(b)
2

文字列として連結するにも、キャストしてやる必要がある

>>> str(a) + b
'11'

と、経験が浅いからといって、メリットになるかというと、なんとも言いがたいわけです。型を知らないとダメじゃん。

もっとも、コンパイラ言語で言うところの、short long int16 int32 int64といった区別は必要がなくなるため、ここはものすごいメリットだと思う。例えば、馬鹿でかい数値の演算がこんな感じで計算が出来るのは、コンパイラ言語を使っている人には考えられないだろう。

>>> (2 ** 10) + (16 **10)
1099511628800L

ここは初心者に優しい。

また、変数の宣言が必要がないということは、むしろプログラミング経験の長けた人にこそメリットがあるんじゃないかと。例えば、ループカウンタに使うiなんか、使い捨てなんだから、いちいち宣言するのも面倒。C#あたりだと、宣言しなくてもいいようになっているんだけど、CとかC++みたいにいちいち宣言するのは、本当に面倒・・・。

Pythonでならこう書けるのに。

>>> for i in range(0,10):
	print i

	
0
1
2
3
4
5
6
7
8
9
>>> 

とまぁ、初心者に易しいか、経験者に易しいか、主観的なものなので、この辺で。

いずれにしろ、Pythonってのは、コンパイラ言語と比べるとものすごく高水準でパワフル。コード量も少なくて済む。注意しなくてはならない点も少ないわけではないが、ポインタ操作やメモリの管理などに比べれば、ずっと簡易な作法で書けるんじゃないだろうか。

プログラミング言語において、作法が無いっていうのは有り得ないけどね。

Perlなんかは、作法がものすごく多様だとは思うけれど、ルールが無いわけではないし。