みんなもよく知っているであろう 東大のPythonプログラミング入門を使ってPythonの勉強をしている。
初めて触るプログラミング言語がPythonであれば驚かなかったかもしれないが、「え、Pythonだとそうなの?」というところが序盤にパラパラ出てくるので、以下に軽くまとめてみた。まだテキストは完読しておらず、1-2の途中くらい。
全般
- 型宣言が無い(つけることもできる)
- 物理行っぽい構成(ただし、丸括弧の中身を複数行書けることは確認済み)
- else ifでもなくElseIfでもなくelsifでもなくelif:を使う
- elif:のほかにも文法にコロンが登場する(全部把握してない)
演算子
整数の商だけ求める//演算子が独特。
10//2 #5
10//2.0 #5.0 (これは実数)
7//1.5 #4.0 (商は合ってるが実数)
キャストの関係は後で整理したい。
べき乗の**演算子もちょっと珍しい。べき乗演算子はPerlにもあったけど、他では見かけず「MathライブラリのPower使ってくれ」というのが多い印象だった。
2**2**3 #これは2**(2**3)となり、答えは256になる。(2**2)**3=64とはならない。
他と違って右結合なので、ちょっとわかりにくいのがあまり見かけない理由かもしれない。
型宣言しないときの変数の挙動
整数値の最大値が無い
整数値が無限に大きくなっていく。オーバーフローを気にしないで済むのは良いかもしれないと思った。ただ、おそらくビット演算とかには向かないんだろう。
and演算子やor演算子の優先順位が低い
これはPerlと同じなのでわかりやすかった。Perlには&&とandの両方演算子があったのだが(優先順位が違う)、Pythonにはandだけが残ったらしい。
a > b && a > c とa > b and a > cの結果が違うと判っていても分かりにくいからしょうがない。
グローバル変数とローカル変数が共存しない
他言語と異なるので間違えやすそうなところ。
a = 10
def foo():
return a #結果は10
def bar():
a = 3 #ここはローカル変数が新規に作られている
return a #結果は3
#bar()の実行後にaを参照しても、10のままになっている
知っている限りの他の言語1では、こういった挙動はしない。他の言語から移植したときは罠になりそう。
…やっぱり変数宣言無いタイプは曖昧で苦手。
-
CとC++とPerlとVBとPHPとJava ↩