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

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

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

奇怪行为:

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

示例代码:

代码语言:python
复制
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
复制
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关键字声明变量为全局变量。

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

相关·内容

3 Python 基础: Python函数及递归函数知识点梳理

函数的英文是function,所以,通俗地来讲,函数就是功能的意思。函数是用来封装特定功能的,比如,在Python里面,len()是一个函数,len()这个函数实现的功能是返回一个字符串的长度,所以说len()这个函数他的特定功能就是返回长度,再比如,我们可以自己定义一个函数,然后编写这个函数的功能,之后要使用的时候再调用这个函数。所以函数分为两种类型,一种是系统自带的不用我们编写其功能系统自己就有的,比如len()这种函数,另一种函数是我们自定义的,需要我们编写其功能的,这种函数自由度高,叫做自定义函数,需要使用的时候直接调用该函数。

02

3 Python 基础: Python函数及递归函数知识点梳理

函数的英文是function,所以,通俗地来讲,函数就是功能的意思。函数是用来封装特定功能的,比如,在Python里面,len()是一个函数,len()这个函数实现的功能是返回一个字符串的长度,所以说len()这个函数他的特定功能就是返回长度,再比如,我们可以自己定义一个函数,然后编写这个函数的功能,之后要使用的时候再调用这个函数。所以函数分为两种类型,一种是系统自带的不用我们编写其功能系统自己就有的,比如len()这种函数,另一种函数是我们自定义的,需要我们编写其功能的,这种函数自由度高,叫做自定义函数,需要使用的时候直接调用该函数。

06
领券