Python 局部变量和全局变量
在编程中,变量是存储数据的一种方式。在 Python 中,我们可以声明两种类型的变量:局部变量和全局变量。本文将详细介绍这两种变量的概念、使用方法和使用时需要注意的事项。
什么是局部变量?
局部变量是在函数内部声明的变量,在函数外部无法访问。它们只在函数执行期间存在,并且在函数执行完毕后会被销毁。局部变量的作用范围仅限于创建它的函数。
下面是一个例子,演示了如何在函数中定义和使用局部变量:
输出结果:
局部变量 age 的值为: 25
在上面的例子中,age
是一个局部变量,只能在 my_function()
函数内部使用。当 my_function()
函数被调用时,age
变量被创建,并且在函数打印语句中打印出来。一旦函数执行结束,局部变量 age
也会被销毁。
注意,如果在函数外部尝试访问局部变量,将会引发错误。请看下面的例子:
运行上述代码会抛出一个 NameError
,因为 age
变量在函数外部是不可见的。这是因为 age
变量的作用范围仅限于 my_function()
函数内部。
什么是全局变量?
全局变量是在函数外部声明的变量,可以在程序的任何地方访问。全局变量在程序开始时创建,在程序结束时销毁。
我们使用 global
关键字来声明全局变量。下面是一个例子:
输出结果:
全局变量 name 的值为: Tom
全局变量 age 的值为: 25
在上面的例子中,我们使用关键字 global
来声明在函数内部使用的全局变量 age
。在函数内部,我们可以给 age
赋值,并在函数外部打印它的值。请注意,在调用 my_function()
函数之前,我们可以访问并打印全局变量 name
的值。
局部变量和全局变量的命名冲突
当在函数内部声明一个与全局变量同名的局部变量时,局部变量将会覆盖全局变量。下面是一个示例:
输出结果:
局部变量 name 的值为: Jerry
全局变量 name 的值为: Tom
在上面的例子中,我们在 my_function()
函数内部声明了一个局部变量 name
,它覆盖了全局变量 name
。因此,函数内部打印的是局部变量 name
的值,而函数外部打印的是全局变量 name
的值。
局部变量和全局变量的可变性
在 Python 中,当我们在函数内部修改了一个全局变量时,Python 会创建一个新的局部变量来覆盖全局变量。这是因为 Python 会默认认为我们在函数内部创建了一个新变量,而不是修改了全局变量的值。
然而,如果我们确实想要在函数内部修改全局变量,我们可以使用 global
关键字。下面是一个示例:
输出结果:
全局变量 count 的值为: 1
在上面的例子中,我们使用 global
关键字来告诉 Python 我们要使用函数外部的全局变量 count
。然后,我们在 increment()
函数内部对全局变量 count
进行了修改。
结论
在 Python 中,局部变量和全局变量在作用范围和使用方式上有所不同。
- 局部变量是在函数内部声明的变量,只能在函数内部使用。它们在函数执行期间存在,并在函数执行完毕后被销毁。
- 全局变量是在函数外部声明的变量,可以在程序的任何地方访问。它们在程序开始时创建,在程序结束时销毁。我们可以使用
global
关键字来在函数内部修改全局变量。
在使用变量时,尽量避免命名冲突,特别是使用局部变量时。当局部变量与全局变量同名时,局部变量会覆盖全局变量,可能导致不可预期的结果。