pythonにおけるローカル変数とグローバル変数の役割ドメイン
2428 ワード
ローカル変数:関数の内部で定義され、関数の内部に作用します.ライフサイクル:変数の作成から関数の終了まで死亡します.グローバル変数:定義.pyモジュールの内部は、全体に作用する.pyモジュール.ライフサイクル:変数の作成から.pyモジュールが死亡しました.次に、その役割ドメインをケースで具体的に説明します:(1):
(2)
(3)グローバル変数が可変データクラスである場合、可変データ型を修正する方法により、可変タイプの内容を修正し、グローバル変数の修正を実現することができる.(ここでは、可変データ型が変更されるとメモリにデータの値が変更されるため)
(4)リスト+=と+の違い
なぜなら、+番号操作では、可変オブジェクトと非可変オブジェクトが両方とも__を呼び出すからです.add__操作
+=番号アクションの場合、可変オブジェクト呼び出し_add__,可変オブジェクトによって呼び出されるのは__です.iadd__(可変オブジェクトなし__iadd_)_iadd__その場で修正
def Demo1():
num = 1
print(num)
Demo1()
print(num)
"""
num , num ,
:NameError: name 'num' is not defined
"""
(2)
num = 0
def Demo1():
num = 1
print(" demo1 :",num)
def Demo2():
print(" demo2 :",num)
Demo1()
Demo2()
print(" :",num)
"""
:
demo1 : 1
demo2 : 0
: 0
:
, demo1 num = 1, demo1 , num 0; python , , , 。 , global 。
"""
#
num = 0
def Demo1():
global num
num = 1
print(" demo1 :",num)
def Demo2():
print(" demo2 :",num)
Demo1()
Demo2()
print(" :",num)
""'
:
demo1 : 1
demo2 : 1
: 1
"""
(3)グローバル変数が可変データクラスである場合、可変データ型を修正する方法により、可変タイプの内容を修正し、グローバル変数の修正を実現することができる.(ここでは、可変データ型が変更されるとメモリにデータの値が変更されるため)
num_list = [1,2,3]
def Demo1(demo1_list):
demo1_list.append(4)
print(" demo1 :",demo1_list)
def Demo2():
print(" demo2 :",num_list)
Demo1(num_list)
Demo2()
print(" :",num_list)
"""
:
demo1 : [1, 2, 3, 4]
demo2 : [1, 2, 3, 4]
: [1, 2, 3, 4]
"""
(4)リスト+=と+の違い
+
num_list = [1,2,3]
def Demo1(demo1_list):
demo1_list = demo1_list + [4,5,6]
print(" demo1 :",demo1_list)
def Demo2():
print(" demo2 :",num_list)
Demo1(num_list)
Demo2()
print(" :",num_list)
:
demo1 : [1, 2, 3, 4, 5, 6]
demo2 : [1, 2, 3]
: [1, 2, 3]
+=:
num_list = [1,2,3]
def Demo1(demo1_list):
demo1_list += [4,5,6]
print(" demo1 :",demo1_list)
def Demo2():
print(" demo2 :",num_list)
Demo1(num_list)
Demo2()
print(" :",num_list)
:
demo1 : [1, 2, 3, 4, 5, 6]
demo2 : [1, 2, 3, 4, 5, 6]
: [1, 2, 3, 4, 5, 6]
なぜなら、+番号操作では、可変オブジェクトと非可変オブジェクトが両方とも__を呼び出すからです.add__操作
+=番号アクションの場合、可変オブジェクト呼び出し_add__,可変オブジェクトによって呼び出されるのは__です.iadd__(可変オブジェクトなし__iadd_)_iadd__その場で修正