CodeGym /Javaコース /Python SELF JA /重要な追加情報

重要な追加情報

Python SELF JA
レベル 5 , レッスン 6
使用可能

6.1 変数は参照

Pythonの変数はオブジェクトへの参照であり、変数そのものではないんだ。これってことは、Pythonで変数を作成すると、メモリ内のオブジェクトへの参照を作成しているってこと。

この言語の特徴は、特に関数にオブジェクトを渡したり、他の変数に代入するときに重要な影響があるよね。

変数を作成して値を代入すると、Pythonはその値のためにメモリ内にオブジェクトを確保し、そのオブジェクトへの参照を変数にする。ある変数を別の変数に代入すると、新しい変数は元の変数と同じオブジェクトを指す。これは、オブジェクトが変更可能であれば、ある変数を通じて行った変更は他の変数にも反映されるってこと。

例:


a = [1, 2, 3]
b = a
b.append(4)
print(a)  # 出力: [1, 2, 3, 4]

変数bに数4を追加したけど、実は変数aのリストにも追加されてるんだよね。だって、実際にはどちらの変数もリスト[1, 2, 3]のオブジェクトへの参照に過ぎないから。

6.2 不変オブジェクト

Pythonでは、オブジェクトは変更可能なものと 不変なものに分かれるよ。リストや辞書みたいな変更可能なオブジェクトは、作成後に変更できる。

文字列や数値のような不変オブジェクトは、 作成後に変更できない。不変オブジェクトを扱うときは、変更は新しいオブジェクトの作成を引き起こすんだ。

代入はオブジェクトを変えないんだよ:


a = 5  # aはオブジェクト5への参照を保持
b = a  # bもオブジェクト5への参照を保持
b = 3  # 今度はbがオブジェクト3への参照を保持
print(a)  # 出力: 5               

オブジェクトを変更するには、その関数を呼び出すんだよ:


a = [1, 2, 3]
b = a
b.append(4)
print(a)  # 出力: [1, 2, 3, 4]                              

でも不変オブジェクトも関数を持ってて、これらの関数は元のオブジェクトを変えずに、新しい結果を持つ新しいオブジェクトを返すんだ。


name = "Alex"
print(name)  # 出力: Alex
name2 = name.lower() 
print(name2)  # 出力: alex               

文字列は不変オブジェクトだから、メソッドがあっても、これらのメソッドは元の文字列オブジェクトを変えないんだよ。代わりに、常に新しい文字列(新しいオブジェクト)を返すだけ。古いオブジェクトはそのまま変わらないんだ。

6.3 Noneタイプの扱い

Pythonには特別なデータ型があって、これは値の欠如を表すんだ。それがNone。空の変数を示すためや、何も返さない関数の戻り値として使われる。Noneの理解は、特に条件文でのプログラムの挙動やデータ操作において重要だよ。

Noneの基本の使い方

NoneNoneTypeクラスの唯一のインスタンス。変数に値がないことを示すために使われる。Noneは条件式では偽(False)と評価されるんだ。


a = None
if a:
    print("a is True")
else:
    print("a is None or False")

Noneとの比較

変数がNoneかどうかをチェックするには、is演算子を使うべきで、==でやらないようにしよう。is演算子は値の等価性ではなく、同一性をチェックするんだ。


a = None
if a is None:
    print("a is None")
else:
    print("a has value")

関数とNone

Noneは、明示的に値を返さない関数でしばしば使われる。関数が値を返さない場合、暗黙的にNoneを返すんだ。


def func():
    print("This function returns None")

result = func()
print(result)  # 出力: None

Noneとリスト

Noneはリスト、タプル、他のコレクションで、特定の位置に要素がないことを示すために使われる。


my_list = [1, None, 3]
print(my_list)  # 出力: [1, None, 3]
1
Опрос
型変換,  5 уровень,  6 лекция
недоступен
型変換
型変換
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION