他の言語でのプログラミング経験がある方を対象に、Pythonの基本的な文法と組み込みデータ型を解説します。多くの静的型付け言語(Java, C++, C#など)との違いを意識しながら、Pythonの特徴を素早く掴んでいきましょう。特に、動的型付けは重要なコンセプトです。
Pythonの最も大きな特徴の一つは、変数の型を宣言する必要がないことです。変数への代入が、変数の作成と型の決定を同時に行います。
>>> # 変数 message を作成し、文字列を代入 >>> message = "Hello, Python!" >>> print(message) Hello, Python! >>> # 変数 number を作成し、整数を代入 >>> number = 100 >>> print(number) 100
さらに、Pythonは動的型付け言語です。これは、一度作成した変数に、異なる型のデータを再代入できることを意味します。type()関数を使うと、変数が現在どの型を参照しているかを確認できます。
>>> x = 10 >>> type(x) <class 'int'> >>> # 同じ変数 x に文字列を再代入 >>> x = "Hello" >>> type(x) <class 'str'>
この柔軟性は、静的型付け言語に慣れていると少し奇妙に感じるかもしれませんが、Pythonの簡潔さと書きやすさの源泉となっています。
Pythonには多くの組み込みデータ型がありますが、ここでは最も基本的なものを紹介します。
Pythonは整数 (int) と浮動小数点数 (float) を区別します。
>>> # 整数 (int) >>> a = 10 >>> type(a) <class 'int'> >>> # 浮動小数点数 (float) >>> b = 3.14 >>> type(b) <class 'float'>
四則演算は直感的に行えます。注意点として、除算 (/) は常に float を返します。整数除算を行いたい場合は (//) を使います。
>>> 10 / 3 3.3333333333333335 >>> 10 // 3 3 >>> # べき乗 >>> 2 ** 4 16 >>> # 剰余 >>> 10 % 3 1
文字列はシングルクォート (') またはダブルクォート (") で囲んで作成します。
>>> name = "Guido" >>> greeting = 'Hello'
文字列の連結は + 演算子、繰り返しは * 演算子を使います。
>>> full_greeting = greeting + ", " + name + "!"
>>> print(full_greeting)
Hello, Guido!
>>> print("-" * 10)
----------
変数の値を文字列に埋め込む際には、f-string (フォーマット済み文字列リテラル) が非常に便利で推奨されています。文字列の前に f を付け、埋め込みたい変数を {} で囲みます。
>>> name = "Ada"
>>> age = 36
>>> message = f"My name is {name} and I am {age} years old."
>>> print(message)
My name is Ada and I am 36 years old.
真偽値は True と False の2つの値を持ちます(先頭が大文字であることに注意してください)。論理演算子には and, or, not を使います。
>>> is_active = True >>> has_permission = False >>> type(is_active) <class 'bool'> >>> # 論理積 (AND) >>> is_active and has_permission False >>> # 論理和 (OR) >>> is_active or has_permission True >>> # 否定 (NOT) >>> not is_active False
動的型付けは柔軟ですが、コードが大規模になると変数がどの型を期待しているのかが分かりにくくなることがあります。そこで導入されたのが型ヒントです。これは、変数や関数の引数、返り値に「期待される型」を注釈として付与する機能です。
変数名: 型 のように記述します。
>>> # 型ヒントを付けた変数宣言 >>> user_name: str = "Alice" >>> user_id: int = 123
重要な注意点: 型ヒントはあくまで「ヒント」であり、Pythonの実行エンジンはこれを強制しません。つまり、型ヒントと異なる型の値を代入してもエラーにはなりません。
>>> user_id: int = 123 >>> type(user_id) <class 'int'> >>> # int型とヒントを付けたが、文字列を代入できてしまう >>> user_id = "abc-789" >>> type(user_id) <class 'str'>
型ヒントは、コードの可読性を高めたり、MyPyのような静的解析ツールや統合開発環境(IDE)がコードのバグを事前に発見したりするために利用されます。
int, float)、文字列 (str)、真偽値 (bool) がある。変数名: 型) は、コードの可読性を向上させるための注釈であり、実行時に型の強制力はない。item_name という変数に商品名(文字列)、price という変数に価格(整数)、stock という変数に在庫数(整数)をそれぞれ代入してください。その後、f-stringを使って「商品: [商品名], 価格: [価格]円, 在庫: [在庫数]個」という形式の文字列にし、 print() で出力するコードを書いてみましょう。
python practice2_1.py(出力例) 商品: 高性能マウス, 価格: 4500円, 在庫: 2個
is_adult という変数に bool 型の型ヒントを付けて True を代入し、type() で型を確認してください。その後、同じ変数に数値の 20 を代入し、再度 type() で型を確認してください。この結果から、型ヒントが実行時の動作にどのような影響を与える(あるいは与えない)か考察してみましょう。
python practice2_2.py