1.グローバルスコープ(グローバル変数)
.py ファイルでは、グローバル変数はこのファイルの属性に似ており、どこでも呼び出すことができます (呼び出しは変更されず、変更はオプションではありません)。
# 全局变量
m = 5
for i in range(5):
# 这里的 i 也是全局的
print(i)
print(m)
# 在这里输出 i 的值不会报错(但是解释器会有阴影提示)
print(i)
1.1 グローバル グローバル変数の変更
関数内でグローバル変数を変更する場合は、キーワードglobalを使用して、変数が関数内でグローバルであることを示す必要があります。
a = '全局变量'
# global 关键字的使用:可用于在函数内更改全局变量
def printA():
global a
a = '修改后的全局变量' # 如果将上面的一行代码注释掉,则这一行相当于在函数内部又定义了一个局部变量a,不会对全局变量a进行修改
print('a --> : ', a)
print('a --> : ', a) # 输出 a --> : 修改后的全局变量
2. ローカル スコープ (ローカル変数)
関数内で定義された変数はすべてローカル変数であり、関数内でのみ使用でき、外部からアクセスすることはできません。
def func():
c = "函数内的变量"
print('c --> : ', c)
print('c --> : ', c) # 报错,局部变量无法在函数外部进行访问
3. ネストされたスコープ (一般に、ローカル変数にも帰することができます)
ネストとは、関数内に関数を定義することで、外側の関数の変数が内側の関数でアクセスされる場合、外側の関数変数のスコープはネストされたスコープとして理解できます。
内側の関数で外側の関数の変数値を変更したい場合は、キーワードnonlocalで変更する必要があります
def outerFunc():
c = "函数内的变量"
print('c --> : ', c)
e = '嵌套作用域的变量'
# nonlocal 关键字的使用:可以在嵌套函数内更改外层函数的变量
def innerFunc():
nonlocal c
c = '嵌套函数更改外层函数变量'
e = '' # 这里相当于在内层函数中定义了一个新的变量 e ,和外层函数的 e 无关
innerFunc() # 在外层函数内调用内层函数
print('c --> : ', c)
print(e) # 上面内层函数中的 e 未使用 nonlocal 修饰,此处输出结果还是外层函数的变量 e
if __name__ == '__main__':
outerFunc() # 调用外层函数