gpt4 book ai didi

局部和全局之间的 Python 作用域

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:24 25 4
gpt4 key购买 nike

我有两个样本:

一:

import math

def my_function():
print(math.pi)
math.pi = 3
print(math.pi)

my_function()

输出:

3.141592653589793
3

两个:

a = 0

def my_function():
print(a)
a = 3
print(a)

my_function()

输出:

UnboundLocalError: 赋值前引用了局部变量“a”

那么它们有什么区别呢?我认为 math.pia 在这种情况下都是全局的,它应该产生 UnboundLocalError

最佳答案

如果您在函数内进行变量赋值,则全局变量将被忽略,并且在函数执行期间将无法访问,在示例中使用 math 库,您不会覆盖名称 math 本身,这就是它起作用的原因。下面的片段会给你同样的数学库错误:

import math

def my_function():
print(math.pi)
math = 1

my_function()

您可以使用语句 global在访问变量之前,但如果您以后要进行任何赋值,您将覆盖全局变量,因此最好始终避免这样做

import math


def my_function():
global math
print(math.pi)
math = 1

print(math) # -> <module 'math' from ...
my_function() # -> 3.14159265359
print(math) # -> 1

关于局部和全局之间的 Python 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47024278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com