log/20250508/駒井舜
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]~
*ローカル変数とグローバル変数 [#i8bbbbbf]
ローカル変数:関数内で定義される変数。関数外からはアクセスできない。~
例~
#code(py){{
def main():
b = 20 # ローカル変数
print(b)
main()
# print(b) # エラー:bは関数外で未定義
}}
グローバル変数:プログラム全体でアクセス可能な変数。~
ただし、関数内でグローバル変数を「置き換える」とローカル変数として扱われる。~
例
#code(py){{
a = 10 # グローバル変数
def func():
a = 20 # ローカル変数として扱われる
print(a) # 20
func()
print(a) # 10(グローバル変数は変わらない)
}}
解決策:グローバル変数を関数内で編集する場合は、リストや辞書のような~
「ミュータブルなオブジェクト」を使うか、コールバック関数のパラメータ(param)で渡す。~
例~
#code(py){{
info = [False, -1, -1] # ミュータブルなリスト
def mouseEvent(event, x, y, flags, param):
info[0] = True # グローバルなリストを編集
cv2.setMouseCallback("nuko", mouseEvent, info)
}}
グローバル変数は「誰が参照・変更しているか」追跡しづらいため、極力避ける。
*ミュータブル・イミュータブル [#iae47f35]
ここでリスト:Pythonのリストは複数の要素を保持するデータ構造である。例:a = [10, 20, 30]~
ミュータブル:リストや辞書は「変更可能」。内容を編集しても同じオブジェクトのまま。~
例
#code(py){{
a = [10]
def func():
a[0] = 4 # リストの内容を変更
func()
print(a) # [4]
}}
イミュータブル:整数、文字列、タプルなどは「変更不可」。新しいオブジェクトが作成される。~
例
#code(py){{
a = 10
def func():
a = 20 # 新しいローカル変数aを作成
func()
print(a) # 10(グローバル変数は変化しない)
}}
ミュータブルなオブジェクトは「ポインタのような振る舞い」をする。これを理解することで、意図しない変数変更を防げる。
イミュータブルなオブジェクト(例:タプル)は安全だが、変更が必要な場合はリストや辞書を選ぶ。
*ガベージコレクション(GC) [#k077e751]
ガベージコレクション:Pythonが自動で不要になったメモリを解放する仕組み。~
これはオブジェクトが「参照されなくなった」時点で、GCがメモリを解放するということ。~
終了行:
[[FrontPage]]~
*ローカル変数とグローバル変数 [#i8bbbbbf]
ローカル変数:関数内で定義される変数。関数外からはアクセスできない。~
例~
#code(py){{
def main():
b = 20 # ローカル変数
print(b)
main()
# print(b) # エラー:bは関数外で未定義
}}
グローバル変数:プログラム全体でアクセス可能な変数。~
ただし、関数内でグローバル変数を「置き換える」とローカル変数として扱われる。~
例
#code(py){{
a = 10 # グローバル変数
def func():
a = 20 # ローカル変数として扱われる
print(a) # 20
func()
print(a) # 10(グローバル変数は変わらない)
}}
解決策:グローバル変数を関数内で編集する場合は、リストや辞書のような~
「ミュータブルなオブジェクト」を使うか、コールバック関数のパラメータ(param)で渡す。~
例~
#code(py){{
info = [False, -1, -1] # ミュータブルなリスト
def mouseEvent(event, x, y, flags, param):
info[0] = True # グローバルなリストを編集
cv2.setMouseCallback("nuko", mouseEvent, info)
}}
グローバル変数は「誰が参照・変更しているか」追跡しづらいため、極力避ける。
*ミュータブル・イミュータブル [#iae47f35]
ここでリスト:Pythonのリストは複数の要素を保持するデータ構造である。例:a = [10, 20, 30]~
ミュータブル:リストや辞書は「変更可能」。内容を編集しても同じオブジェクトのまま。~
例
#code(py){{
a = [10]
def func():
a[0] = 4 # リストの内容を変更
func()
print(a) # [4]
}}
イミュータブル:整数、文字列、タプルなどは「変更不可」。新しいオブジェクトが作成される。~
例
#code(py){{
a = 10
def func():
a = 20 # 新しいローカル変数aを作成
func()
print(a) # 10(グローバル変数は変化しない)
}}
ミュータブルなオブジェクトは「ポインタのような振る舞い」をする。これを理解することで、意図しない変数変更を防げる。
イミュータブルなオブジェクト(例:タプル)は安全だが、変更が必要な場合はリストや辞書を選ぶ。
*ガベージコレクション(GC) [#k077e751]
ガベージコレクション:Pythonが自動で不要になったメモリを解放する仕組み。~
これはオブジェクトが「参照されなくなった」時点で、GCがメモリを解放するということ。~
ページ名: