0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

他の言語と比較しながら勉強するPython

Last updated at Posted at 2025-01-01

みんなもよく知っているであろう 東大の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では、こういった挙動はしない。他の言語から移植したときは罠になりそう。
…やっぱり変数宣言無いタイプは曖昧で苦手。

  1. CとC++とPerlとVBとPHPとJava

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?