Python 局部变量和全局变量

Python 局部变量和全局变量

Python 局部变量和全局变量

在编程中,变量是存储数据的一种方式。在 Python 中,我们可以声明两种类型的变量:局部变量和全局变量。本文将详细介绍这两种变量的概念、使用方法和使用时需要注意的事项。

什么是局部变量?

局部变量是在函数内部声明的变量,在函数外部无法访问。它们只在函数执行期间存在,并且在函数执行完毕后会被销毁。局部变量的作用范围仅限于创建它的函数。

下面是一个例子,演示了如何在函数中定义和使用局部变量:

def my_function():
    age = 25
    print("局部变量 age 的值为:", age)

my_function()
Python

输出结果:

局部变量 age 的值为: 25

在上面的例子中,age 是一个局部变量,只能在 my_function() 函数内部使用。当 my_function() 函数被调用时,age 变量被创建,并且在函数打印语句中打印出来。一旦函数执行结束,局部变量 age 也会被销毁。

注意,如果在函数外部尝试访问局部变量,将会引发错误。请看下面的例子:

def my_function():
    age = 25

my_function()
print("局部变量 age 的值为:", age)
Python

运行上述代码会抛出一个 NameError,因为 age 变量在函数外部是不可见的。这是因为 age 变量的作用范围仅限于 my_function() 函数内部。

什么是全局变量?

全局变量是在函数外部声明的变量,可以在程序的任何地方访问。全局变量在程序开始时创建,在程序结束时销毁。

我们使用 global 关键字来声明全局变量。下面是一个例子:

name = "Tom"

def my_function():
    global age
    age = 25

my_function()
print("全局变量 name 的值为:", name)
print("全局变量 age 的值为:", age)
Python

输出结果:

全局变量 name 的值为: Tom
全局变量 age 的值为: 25

在上面的例子中,我们使用关键字 global 来声明在函数内部使用的全局变量 age。在函数内部,我们可以给 age 赋值,并在函数外部打印它的值。请注意,在调用 my_function() 函数之前,我们可以访问并打印全局变量 name 的值。

局部变量和全局变量的命名冲突

当在函数内部声明一个与全局变量同名的局部变量时,局部变量将会覆盖全局变量。下面是一个示例:

name = "Tom"

def my_function():
    name = "Jerry"
    print("局部变量 name 的值为:", name)

my_function()
print("全局变量 name 的值为:", name)
Python

输出结果:

局部变量 name 的值为: Jerry
全局变量 name 的值为: Tom

在上面的例子中,我们在 my_function() 函数内部声明了一个局部变量 name,它覆盖了全局变量 name。因此,函数内部打印的是局部变量 name 的值,而函数外部打印的是全局变量 name 的值。

局部变量和全局变量的可变性

Python 中,当我们在函数内部修改了一个全局变量时,Python 会创建一个新的局部变量来覆盖全局变量。这是因为 Python 会默认认为我们在函数内部创建了一个新变量,而不是修改了全局变量的值。

然而,如果我们确实想要在函数内部修改全局变量,我们可以使用 global 关键字。下面是一个示例:

count = 0

def increment():
    global count
    count = count + 1

increment()
print("全局变量 count 的值为:", count)
Python

输出结果:

全局变量 count 的值为: 1

在上面的例子中,我们使用 global 关键字来告诉 Python 我们要使用函数外部的全局变量 count。然后,我们在 increment() 函数内部对全局变量 count 进行了修改。

结论

在 Python 中,局部变量和全局变量在作用范围和使用方式上有所不同。

  • 局部变量是在函数内部声明的变量,只能在函数内部使用。它们在函数执行期间存在,并在函数执行完毕后被销毁。
  • 全局变量是在函数外部声明的变量,可以在程序的任何地方访问。它们在程序开始时创建,在程序结束时销毁。我们可以使用 global 关键字来在函数内部修改全局变量。

在使用变量时,尽量避免命名冲突,特别是使用局部变量时。当局部变量与全局变量同名时,局部变量会覆盖全局变量,可能导致不可预期的结果。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册