一文了解Python中全局变量和局部变量

在Python编程中,变量的作用域是一个重要的概念,它决定了变量在程序中的可见性和生命周期。变量的作用域主要分为两种:全局变量和局部变量。

全局变量

全局变量是在所有函数外部定义的变量,它们可以在整个程序的任何地方被访问和修改。

特点:

  • 全局访问性:可以在程序的任何地方访问。
  • 修改影响:在函数内部修改全局变量的值会影响到全局作用域中的变量。

局部变量

局部变量是在函数内部定义的变量,它们只能在该函数内部被访问。

特点:

  • 局部访问性:只能在定义它们的函数内部访问。
  • 生命周期:当函数执行完毕后,局部变量会被销毁。

案例分析

为了更好地理解全局变量和局部变量,我们来看一个具体的案例:一个简单的工资管理系统。

案例需求:

  • 有一个基本工资存储在全局变量中。
  • 有一个函数用于计算员工的工资,工资由基本工资和奖金组成。
  • 有一个函数用于修改全局变量中的基本工资。

代码案例

# 定义全局变量,存储基本工资
base_salary = 5000

# 计算员工工资的函数,使用全局变量
def calculate_salary(employee_id, bonus):
    """
    根据员工ID和奖金计算工资。
    
    参数:
    employee_id: int, 员工的ID
    bonus: int, 员工的奖金
    
    返回:
    total_salary: int, 员工的总工资
    """

    global base_salary  # 声明base_salary为全局变量
    total_salary = base_salary + bonus
    print(f"Employee {employee_id}'s total salary is: {total_salary}")
    return total_salary

# 修改基本工资的函数
def update_base_salary(new_salary):
    """
    更新全局变量中的基本工资。
    
    参数:
    new_salary: int, 新的基本工资
    """

    global base_salary  # 声明base_salary为全局变量
    base_salary = new_salary
    print(f"Base salary has been updated to: {base_salary}")

# 使用案例
calculate_salary(13000)  # 计算员工1的工资
update_base_salary(6000)   # 更新基本工资
calculate_salary(24000)  # 再次计算员工2的工资

代码注释说明:

  • base_salary 是一个全局变量,初始值为 5000。
  • calculate_salary 函数接受员工 ID 和奖金作为参数,使用 global 关键字声明 base_salary 为全局变量,然后计算并打印员工的总工资。
  • update_base_salary 函数同样使用 global 关键字来更新全局变量 base_salary 的值,并打印更新后的基本工资。

输出结果:

Employee 1's total salary is: 8000
Base salary has been updated to: 6000
Employee 2'
s total salary is: 10000

通过这个案例,我们可以看到全局变量如何在函数之间共享数据,以及如何在函数内部修改这些数据。同时,我们也看到了局部变量(如函数参数)如何在函数内部使用,而不会影响全局作用域。


请使用浏览器的分享功能分享到微信等