4. Python の変数スコープとグローバル/非ローカル キーワードの使用

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()	# 调用外层函数

継続的に更新しますので、より多くの注意を払ってください...

おすすめ

転載: blog.csdn.net/FY_13781298928/article/details/129706538