プログラミングを始めたばかりの人にとって「変数」は最初の壁のひとつです。この記事では、PythonとC++の変数の扱い方を比較しながら、基礎から応用まで丁寧に解説していきます。
目次
- 変数とは?
- Pythonの変数の特徴
- C++の変数の特徴
- スコープ(有効範囲)
- 型と型推論
- 定数の扱い
- まとめ
1. 変数とは?
変数は「データを格納する名前付きの入れ物」です。数値、文字列、配列など、あらゆるデータを一時的に保持するために使います。
2. Pythonの変数の特徴
Pythonは動的型付け言語なので、変数の宣言に型を書く必要がありません。
▶ 例1: 基本的な変数
x = 10 # 整数
y = 3.14 # 浮動小数点
name = "Alice" # 文字列
is_active = True # ブール値
print(x, y, name, is_active)
▶ 例2: 再代入と型変更
x = 10
x = "ten" # 型が変わってもエラーにならない
print(x) # => ten
▶ 例3: 型ヒント(Python 3.5以降)
def greet(name: str) -> str:
return f"Hello, {name}"
print(greet("Bob"))
型ヒントはエラーを防ぐ目的ではなく、可読性やツールの補助のために使われます。
3. C++の変数の特徴
C++は静的型付け言語なので、変数を使う前に明示的に型を宣言する必要があります。
▶ 例1: 基本的な変数
#include <iostream>
using namespace std;
int main() {
int x = 10;
double y = 3.14;
string name = "Alice";
bool isActive = true;
cout << x << " " << y << " " << name << " " << isActive << endl;
return 0;
}
▶ 例2: 型違いの代入(エラー)
int x = 10;
x = "ten"; // コンパイルエラー!
C++では、変数に格納する値の型が一致していないとコンパイルエラーになります。
4. スコープ(有効範囲)
Pythonのスコープ
x = 10
def test():
x = 20
print("内部:", x)
test()
print("外部:", x)
内部: 20
外部: 10
関数内で代入した変数は、ローカル変数になります。
C++のスコープ
#include <iostream>
using namespace std;
int x = 10;
void test() {
int x = 20;
cout << "内部: " << x << endl;
}
int main() {
test();
cout << "外部: " << x << endl;
return 0;
}
内部: 20
外部: 10
C++でもスコープのルールは似ており、内部の変数が優先されます。
5. 型と型推論(Pythonのtype()
、C++のauto
)
Python: type()
で型確認
x = 10
print(type(x)) # <class 'int'>
x = "hello"
print(type(x)) # <class 'str'>
C++: auto
による型推論(C++11以降)
auto x = 10; // 推論: int
auto y = 3.14; // 推論: double
auto name = "Bob"; // 推論: const char*
cout << x << ", " << y << ", " << name << endl;
auto
は型を書く手間を省けますが、予想外の型になる場合もあるので注意。
6. 定数の扱い
Python: 定数は慣習で対応
PI = 3.14159 # 定数として扱う(実際には再代入可能)
PI = 3 # できてしまう(ただし推奨されない)
Pythonには本当の定数を作る仕組みはないため、すべて大文字で定数を表すのが一般的です。
C++: const
で定数を定義
const double PI = 3.14159;
PI = 3; // コンパイルエラー
const
を使うと再代入を防止できます。
7. まとめ
特徴 | Python | C++ |
---|---|---|
型付け | 動的(型不要) | 静的(型必須) |
型推論 | 可(型ヒントあり) | 可(auto ) |
スコープ | 関数単位 | ブロック単位 |
定数 | 慣習で表現(再代入可能) | const で明示的に定義 |
柔軟性 | 高い | 厳密 |
エラー検出 | 実行時 | コンパイル時 |
おわりに
PythonとC++は真逆の性質を持つ言語ですが、それぞれの変数の扱い方を理解することで、言語設計の意図やプログラミングの本質をより深く学ぶことができます。
両者の違いを意識しながらコードを書くことで、バグを未然に防ぎ、可読性と安全性の高いコードを書くことができるようになります。
もしこの記事が役立ったら、ぜひ他の言語と変数の比較記事もチェックしてみてください!