-
グローバルグローバル変数
- グローバル関数表関数は、外部グローバルグローバル変数を表すために必要なときにときに変数を変更するために、グローバル変数であります
グローバルに使用
リストタイプの場合: 最初と最後の文字を変更します
newName = "xiaoming" lst4 = list(newName) def change1(): lst4 = ['g', 'i', 'a', 'o', 'm', 'i', 'h', 'x'] change1() print(lst4) def change2(): global lst4 lst4 = ['g', 'i', 'a', 'o', 'm', 'i', 'h', 'x'] change2() print(lst4) 结果分别为: ['x', 'i', 'a', 'o', 'm', 'i', 'h', 'g'] ['g', 'i', 'a', 'o', 'm', 'i', 'h', 'x']
文字列型の場合:
name3 = "xiaoming" def change3(): name3 = "giaominx" change3() print(name3) def change4(): global name3 name3 = "giaominx" change4() print(name3) 结果: xiaoming giaominx
int型の場合:
i = 3 def increase(): global i i = 4 increase() print(i) 结果: 4
概要:1、あなたはグローバル関数で外部変数の機能を変更したいときに、グローバル変数として関数を宣言する必要があります
2、change1とlst4でchange3、実際にNAME3は、新しい関数が再定義された関数の外で定義された関数の変数ではありません
同等の残りのメソッド
lst3 = list(newName) def swap1(): h = lst3[0] lst3[0] = lst3[-1] lst3[-1] = h swap1() print(lst3)
実現するために引数を渡すと同等:
lst3 = list(newName) def swap2(lst): h = lst[0] lst[0] = lst[-1] lst[-1] = h swap2(lst3) print(lst3)
しかし、唯一の機能を変更し、変数の値の再割り当てを与えません。
lst3 = list(newName) def swap3(): h = lst3[0] lst3[0] = lst3[-1] lst3[-1] = h lst3 = ['g', 'i', 'a', 'o', 'm', 'i', 'h', 'x'] swap3() print(lst3) 报错:UnboundLocalError: local variable 'lst3' referenced before assignment
あなたが割り当てと操作の値を変更したい場合はグローバルすることができ
lst3 = list(name3) def swap1(): global lst3 h = lst3[0] lst3[0] = lst3[-1] lst3[-1] = h lst3 = ['x', 'i', 'a', 'o'] swap1() print(lst3)
文字列データを変更することができないため、文字列データ型は、そうすることはできません
def swap4(): h = newName[0] newName[0] = newName[-1] newName[-1] = h swap4() print(newName) TypeError: 'str' object does not support item assignment
要約:
-
データ・タイプが参照データ型である場合、パラメータは、実際の入力パラメータswap2を通過させることによって変更することができます
-
データは、データの値を変更するために必要なグローバルタイムの基本的なデータ型定義である場合には
-
Javaのは、関数外の変数で定義されているメンバ変数で、その値は、関数内で直接変更することができ、あなたは、変数名に異なる名前を定義する必要が変更したくないはず
-
これは、グローバルとの間の差である1、Pythonの世界では、グローバル変数を指し、後にのみ同じ変数(:変数は参照データ型である場合、同じ変数がswap1ように表すことができる場合、その値を変更し特別な場合)を指定発現しました使用時、外部変数を変更する場合、2、ジャワでは、これは、メンバ変数を指すために変数と同じ名前の変数とメンバ関数は、の使用を区別する場合、示されるように同じ変数を指定する必要がない3を比較します、Javaのより高い柔軟性が、関数内のデータ値を改ざんするのは簡単なので、メンバ変数の定義は、Pythonを心配しないように注意する必要が同じ名前を付けられますが、変更は、より複雑なグローバル変数であります