Topic:Python/Pythonの文法的特徴
Pythonの文法的特徴
[編集]インデント
[編集]Pythonの場合、ブロックの表現にはインデント(字下げ)を使い、次のように表します。他の言語でよくある begin … end や { … } の様なカラム自由な構文ではありません。 また、いくつかの言語に特徴的なmain関数などを定義する必要もなく、実行するとそのまま上から順番にコードを読んで実行します。
your_answer = input("1+1は?") if your_answer == "2": print("正解!") else: print("不正解...")
(実行は python3 ファイル名.py (Ubuntu, Mac)、 python ファイル名.py (Windows)でできます。)
$ python3 main.py 1+1は?
- これは、上のコードを main.py として保存した場合の出力です。 1+1は? と聞かれ、入力を受け付けています。入力を受け付ける関数がinputです。
- なにかを入力して、エンターを押すと、答えが正しい(2を入力した)ならば「正解!」と、正しくないならば「不正解...」と表示されるはずです。
論理演算子
[編集]また、論理演算子(Cなどの他の言語で言うところの||
や&&
)が英単語(or
や and
)で定義されていることも特徴の一つです。
if a == "hello" and b == "world": # 他の言語でのa == "hello" && b == "world"と同じ。 print("hello world!") if a == "hello" or b == "world": # 他の言語でのa == "hello" || b == "world"と同じ。 print("hello world?")
型を持つのは変数ではなく値
[編集]C/C++/Javaのような、静的型付けのプログラミング言語では、変数が型を持ちますが、Pythonのような動的型付けのプログラミング言語では値が型を持ちます。
- 型を持つのは変数ではなく値
x = 3 print(f"{x=}, {type(x)=}, ${type(3)=}") x = 'abc' print(f"{x=}, {type(x)=}, ${type('abc')=}") x = (1,2,3) print(f"{x=}, {type(x)=}, ${type((1,2,3))=}")
- 実行結果
x=3, type(x)=<class 'int'>, $type(3)=<class 'int'> x='abc', type(x)=<class 'str'>, $type('abc')=<class 'str'> x=(1, 2, 3), type(x)=<class 'tuple'>, $type((1,2,3))=<class 'tuple'>
- x に
3
を代入- python3 では、変数宣言は必要ありません。
- x の値を参照すると
3
、x の型は<class 'int'>
、3
の型も<class 'int'>
- x に
’abc’
を代入 - x の値を参照すると
’abc’
、x の型は<class 'str'>
、’abc’
の型も<class 'str'>
- x に
(1,2,3)
を代入 - x の値を参照すると
(1, 2, 3)
、x の型は<class 'tuple'>
、(1,2,3)
の型も<class 'tuple'>
このように、変数は示す値を代入で変えることができ、値が型をもっています。
この特徴は、動的型付けのプログラミング言語に共通で、Pythonのほか、JavaScript、Rubyなどが動的型付けのプログラミング言語です。
行末に ;(セミコロン)はいりません
[編集]C/C++/JavaなどCファミリーのプログラミング言語は、行末に ;(セミコロン)が必要ですが、Pythonではいりません。
そのかわり、if
・elif
・else
・while
・for
のような、Cファミリーでは ; をつけてはいけないところに :(コロン)が必須です。
そのほか、細かいところまで挙げるとキリがありませんが、まずは今挙げた特徴を覚えておくと良いでしょう。
まとめ
[編集]一言で言えば、pythonは、コードが短くて済むということです。他の言語に比べて圧倒的に動作のためのコードが短縮できることがあります。
また、コードの書き方の幅を調節していることも特徴の一つです。書き方に幅がありすぎると同じ言語なのに読めない人が出てくるし、幅がないと逆にコードを短くするような工夫ができなくなってしまいます。その2つのちょうど間をとっているのがpythonなのです。