首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python中全局变量()和局部变量()的奇怪行为

在Python中,全局变量和局部变量是两种不同的变量作用域。全局变量是在整个程序中都可访问的变量,而局部变量只在特定的代码块或函数中可访问。

奇怪行为:

在Python中,当全局变量和局部变量同名时,会出现一些奇怪的行为。具体来说,当在一个函数内部使用同名变量时,Python会将其视为局部变量,而不是全局变量。这意味着在函数内部对该变量的修改不会影响到全局变量的值。

示例代码:

代码语言:python
代码运行次数:0
复制
x = 10  # 全局变量

def func():
    x = 20  # 局部变量
    print("局部变量 x =", x)

func()
print("全局变量 x =", x)

输出结果:

代码语言:txt
复制
局部变量 x = 20
全局变量 x = 10

在上述代码中,我们定义了一个全局变量x,并在函数func()内部定义了一个同名的局部变量x。当我们在函数内部打印局部变量x时,输出的值为20。然而,在函数外部打印全局变量x时,输出的值为10,没有受到函数内部的修改影响。

这种奇怪的行为是因为Python在函数内部会创建一个新的局部命名空间,用于存储函数内部的变量。当函数内部存在同名变量时,Python会优先使用局部变量,而不是全局变量。

为了在函数内部修改全局变量的值,我们可以使用global关键字来声明变量为全局变量。示例代码如下:

代码语言:python
代码运行次数:0
复制
x = 10  # 全局变量

def func():
    global x  # 声明x为全局变量
    x = 20  # 修改全局变量的值
    print("全局变量 x =", x)

func()
print("全局变量 x =", x)

输出结果:

代码语言:txt
复制
全局变量 x = 20
全局变量 x = 20

在上述代码中,我们使用global关键字声明了变量x为全局变量,并在函数内部修改了其值。当我们在函数内部和外部打印全局变量x时,输出的值都为20,说明全局变量的值已经被成功修改。

总结:

Python中的全局变量和局部变量有不同的作用域。当在函数内部使用同名变量时,Python会将其视为局部变量,而不是全局变量。为了在函数内部修改全局变量的值,可以使用global关键字声明变量为全局变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 关于python中全局变量和局部变量的一个问题

    众所周知,全局变量和局部变量可以说是泾渭分明,如 a = 10 def test(): a = 20 print(a) test() #将输出局部变量a print(a) # 将输出全局变量a #答案是: 20 10 函数内部的局部变量a,并不会影响全局变量a 但是假设为列表或字典呢? my_list = [10] def list_test(): my_list=[] my_list.append(20) print(‘函数的’,my_list) list_test() print(my_list) 答案为:函数的 [20] [10] 仍然符合局部变量并不会影响全局变量 注意:假设为一个空的列表或字典 my_list = [] def list_test(): my_list.append(20) print(‘函数的’,my_list) list_test() print(my_list) 答案:函数的 [20] [20] 这里为何是20,而不是[]? 个人见解:函数内部无my_list这个列表,因此他将会调用全局变量my_list列表,然后把元素放在了列表中,改变的是全局变量,又或是因为是容器? 望大佬们积极解惑,不胜感激

    02
    领券