1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java脳が戸惑うPythonにおける変数の初期化事情

Last updated at Posted at 2025-08-10

はじめに

JavaやC#を触ってきた人がPythonに移ると、
「変数だけ定義して、値はあとで入れる」
というおなじみのパターンができず最初に戸惑うかもしれません。
僕も実際にそうでした。

本記事ではこの違いの理由とPythonでの代替方法を解説します。

Javaではできる「変数だけ宣言」

Javaならこんな書き方普通にしますよね。

java
String name; // 値はまだ入れない

変数は定義されているけど値は設定されていない状態です。
参照型ならnull、プリミティブ型なら初期値が入ります。

Pythonには「変数だけ宣言」がない

Pythonでは変数宣言という構文自体が存在せず、
代入と同時に初めて変数が生まれます。

python
name  # NameError: name 'name' is not defined

未代入の変数は存在しないので、
「型だけ決めておく」みたいなことはできません。

代替方法は None

Pythonで「値なし状態」を作りたいときはNoneを使います。
これはJavaのnullに相当します。

python
name = None  # まだ値はないことを明示

# 後で代入
name = "Alice"

これで「今は空だけど後で値を入れる」意図を明確にできます。

Noneを使うときの注意点

比較は == ではなく is を使う

python
if name is None:
    print("値はまだない")

関数の戻り値としても便利

python
def find_user(id):
    if id not in db:
        return None

まとめ

  • JavaやC#では「変数宣言」と「値の代入」が分離している

  • Pythonでは変数は代入と同時に初めて存在する

  • 値なし状態は None を使う

  • 比較は is None が推奨

最初は違和感がありますが、慣れるとシンプルで分かりやすい仕組みです。
Java脳からPython脳に切り替える最初のステップとして
この違いは押さえておくとスムーズに移行できます。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?