Python变量作用域(四个主要作用域)

 更新时间:2025年11月17日 09:40:54   作者:luod  
文章介绍了Python中变量的作用域,包括局部作用域、嵌套函数作用域、全局作用域和内置作用域,还讨论了变量遮蔽问题以及如何使用`global`和`nonlocal`关键字来修改不同作用域中的变量,感兴趣的朋友跟随小编一起看看吧

在程序中定义一个变量时,这个变量是有作用域的,变量的作用范围被称为它的作用域。

四种主要作用域

  1. 局部作用域
  2. 嵌套函数作用域
  3. 全局作用域
  4. 内置作用域

1. 局部作用域

def my_function():
    x = 10  # 局部变量
    print(x)  # 可以访问
my_function()  # 输出: 10
# print(x)  # 这里会报错,x在函数外部不可访问

2. 嵌套函数作用域

在嵌套函数中,内部函数可以访问外部函数的变量。

def outer():
    x = "outer"  # 嵌套作用域变量
    def inner():
        print(x)  # 可以访问外部函数的变量
    inner()
outer()  # 输出: outer

3. 全局作用域

在模块级别定义的变量具有全局作用域。

x = "global"  # 全局变量
def my_function():
    print(x)  # 可以访问全局变量
my_function()  # 输出: global
print(x)       # 输出: global

4. 内置作用域

在Python中,内置作用域(Built-in Scope) 是最外层的作用域,包含了所有内置函数、异常和对象,如print(), len(), True等

内置作用域中的名称在任何地方都可用,无需导入:

# 这些函数都来自内置作用域
print("Hello, World!")  # print 是内置函数
len([1, 2, 3])         # len 是内置函数
max(1, 2, 3)           # max 是内置函数

常用的内置函数分类

数学函数

# 数值计算
print(abs(-5))      # 绝对值: 5
print(round(3.14159, 2))  # 四舍五入: 3.14
print(pow(2, 3))    # 幂运算: 8
print(divmod(10, 3)) # 商和余数: (3, 1)

类型转换

# 类型转换函数
print(int("123"))    # 字符串转整数: 123
print(float("3.14")) # 字符串转浮点数: 3.14
print(str(123))      # 转字符串: "123"
print(bool(0))       # 转布尔值: False

输入输出

# 输入输出函数
name = input("请输入你的名字: ")
print(f"你好, {name}!")

# # 文件操作
with open('text.txt', 'w') as f:
        f.write("Hello, World!")

内置异常

# 常见内置异常
try:
    x = 1 / 0
except ZeroDivisionError as e:  # ZeroDivisionError是内置异常
    print(f"捕获到异常: {e}")
# 其他常见内置异常
builtin_exceptions = [
    'ArithmeticError', 'AssertionError', 'AttributeError',
    'EOFError', 'ImportError', 'IndexError', 'KeyError',
    'KeyboardInterrupt', 'NameError', 'TypeError', 'ValueError'
]

5.变量遮蔽问题

当不同作用域有同名变量时,内部作用域的变量会"遮蔽"外部作用域的变量。

x = "global"
def test():
    x = "local"  # 遮蔽了全局变量x
    print(x)     # 输出: local
test()
print(x)         # 输出: global

6.修改作用域的关键字

global 关键字

用于在函数内部修改全局变量。

x = 10
def modify_global():
    global x
    x = 20  # 修改全局变量
modify_global()
print(x)  # 输出: 20

nonlocal关键字

用于在嵌套函数中修改外部函数的变量。

def outer():
    x = 10
    def inner():
        nonlocal x
        x = 20  # 修改外部函数的变量
    inner()
    print(x)  # 输出: 20
outer()

到此这篇关于Python变量作用域(四个主要作用域)的文章就介绍到这了,更多相关Python变量作用域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用python3 的pygame模块实现塔防游戏

    利用python3 的pygame模块实现塔防游戏

    这篇文章主要介绍了利用python3 的pygame模块实现塔防游戏,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python实现网站的模拟登录

    python实现网站的模拟登录

    这篇文章主要介绍了python实现网站的模拟登录的相关资料,通过自己构造post数据来用Python实现登录过程,需要的朋友可以参考下
    2016-01-01
  • 利用Python中unittest实现简单的单元测试实例详解

    利用Python中unittest实现简单的单元测试实例详解

    如果项目复杂,进行单元测试是保证降低出错率的好方法,Python提供的unittest可以很方便的实现单元测试,从而可以替换掉繁琐杂乱的main函数测试的方法,将测试用例、测试方法进行统一的管理和维护。本文主要介绍了利用Python中unittest实现简单的单元测试。
    2017-01-01
  • Python实现人脸识别并进行视频跟踪打码

    Python实现人脸识别并进行视频跟踪打码

    这篇文章主要为大家详细介绍了如何利用Python实现人脸识别并进行视频跟踪打码效果,羞羞的画面统统打上马赛克,感兴趣的小伙伴可以了解一下
    2023-03-03
  • Django 404、500页面全局配置知识点详解

    Django 404、500页面全局配置知识点详解

    在本篇文章里小编给大家整理了关于Django 404、500页面全局配置知识点详解,需要的朋友们可以学习下。
    2020-03-03
  • 虚拟环境及venv和virtualenv的区别说明

    虚拟环境及venv和virtualenv的区别说明

    这篇文章主要介绍了虚拟环境及venv和virtualenv的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • python使用pypdf2实现pdf文档解密

    python使用pypdf2实现pdf文档解密

    利用pypdf2完成pdf的解密,这里的事例是python3环境下的,当然python2下也可以运行,只需要修改名称即可,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python轻量级web框架bottle使用方法解析

    Python轻量级web框架bottle使用方法解析

    这篇文章主要介绍了Python轻量级web框架bottle使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 基于Python和PyYAML读取yaml配置文件数据

    基于Python和PyYAML读取yaml配置文件数据

    这篇文章主要介绍了基于Python和PyYAML读取yaml配置文件数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python实现GUI学生信息管理系统

    Python实现GUI学生信息管理系统

    这篇文章主要为大家详细介绍了Python实现GUI学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论