ython快速入门学习笔记(进阶篇)十八:四种作用域

  • 原创
  • 作者:程序员三丰
  • 发布时间:2026-04-02 10:54
  • 浏览量:10
python入门第十八课,主要是学习了局部、嵌套、全局、内置四种作用域,按LEGB规则层层向外查找,共同构成变量的可见范围与访问层级。

Python 中有4中作用域:

❏ Local(局部作用域)

❏ Enclosing(外层作用域)

❏ Global(全局作用域)

❏ Built-in(内建作用域)

当访问一个变量时,Python 会按照以下顺序查找:

Local -> Enclosing -> Global -> Built-in

作用域范围图示:

下面这个介绍。

局部作用域(Local)

定义:函数的内部就是局部作用域,局部作用域中的变量,只在该函数内部可见。

特定

  • 每次调用函数都会创建一个新的局部作用域。
  • 函数运行结束后,局部作用域随之销毁。
  • 局部作用域优先级最高,即:查找一个变量时,Python 会首先在局部作用域中查找。

举例

def test():
    x = 10
    print(x) # 在局部作用域,可以访问

test()

# print(x) # 不可访问,报错:NameError: name 'x' is not defined

外层作用域(Enclosing)

定义:如果函数中有定义了函数,那么外层函数的作用域,就是内层函数的 Enclosing 作用域。

特定

  • 只有当函数“嵌套定义”时才会出现。
  • 内层函数可以读取外层函数变量。
  • 想修改外层变量必须使用 nonlocal

举例

def outer():
    x = 10 # outer 的局部变量,是 inner 的 Enclosing 变量

    def inner():
        # 下面两行代码,修改外层函数作用域变量
        nonlocal x
        x = 12
        print('内层函数输出:', x) # 内层函数读取外层变量

    inner()

    print('外层函数输出:', x)

outer()

全局作用域(Global)

定义.py文件就是全局作用域,全局作用域中的变量,在当前.py文件的任何位置都可以访问。

特定

  • 全局变量只在当前.py文件中可见。
  • 函数内部可以使用 global关键字修改全局变量。

举例

a = 100
b = 200

def test2():
    # 以下两行代码,修改全局变量
    global b
    b = 300
    print(a, b)

test2()
print(a, b) # 在文件任何位置都可以访问

内建作用域(Built-in)

定义:Python 预先定义好的东西,会放在内建作用域中,所有.py文件都可以直接使用。

特定

  • 所有.py文件都能直接使用其中的名称,例如:printlenrangesummax等。
  • 查找优先级最低,即:查找一个变量时,内建作用域是“最后一道防线”。

举例

print('hello')
len([1, 2, 3])

总结

本文的内容需要多多理解。

声明:本文为原创文章,51blog.xyz和作者拥有版权,如需转载,请注明来源于51blog.xyz并保留原文链接:https://mp.51blog.xyz/article/120.html

文章归档

推荐文章

buildadmin logo
Thinkphp8 Vue3 Element PLus TypeScript Vite Pinia

🔥BuildAdmin是一个永久免费开源,无需授权即可商业使用,且使用了流行技术栈快速创建商业级后台管理系统。

热门标签

PHP ThinkPHP ThinkPHP5.1 Go Mysql Mysql5.7 Redis Linux CentOS7 Git HTML CSS CSS3 Javascript JQuery Vue LayUI VMware Uniapp 微信小程序 docker wiki Confluence7 学习笔记 uView ES6 Ant Design Pro of Vue React ThinkPHP6.0 chrome 扩展 翻译工具 Nuxt SSR 服务端渲染 scrollreveal.js ThinkPHP8.0 Mac webman 跨域CORS vscode GitHub ECharts Canvas vue3 three.js 微信支付 PHP全栈开发 Python AI 人工智能 AI生成 工作经验 实战笔记