讲师中心 微信公众号
AI工具推荐 视频效率加速

如何快速掌握Python函数的作用域?

小敏小哥_3052

小敏小哥_3052

发布时间:2025-12-02 22:21:09

|

799人浏览过

|

来源于php中文网

原创

LEGB规则指Python按局部(L)、外层函数(E)、全局(G)、内置(B)顺序查找变量,如函数中先查局部变量,再向外逐层查找,直到内置作用域。

如何快速掌握python函数的作用域?

理解Python函数的作用域,关键在于搞清变量在不同层级的可见性和查找规则。掌握“LEGB”原则就能快速理清逻辑。

什么是LEGB规则?

Python按照特定顺序查找变量,这个顺序就是LEGB:

  • L(Local):函数内部的局部作用域
  • E(Enclosing):外层函数的作用域(闭包)
  • G(Global):模块级别的全局作用域
  • B(Built-in):内置作用域(如print、len等)

Python从内到外依次查找,一旦找到就停止。比如在函数中使用一个变量,先看是否是局部变量,再看外层函数有没有定义,然后看全局,最后查内置。

局部与全局变量的区别

在函数内部赋值的变量默认是局部的,不会影响全局同名变量。

立即学习“Python免费学习笔记(深入)”;

python学习
python学习

Python 编程学习助手 skill,面向零基础用户。 当用户表达以下意图时触发: - 学习 Python 基础概念(变量、数据类型、循环、函数、类等) - 请求 Python 练习题或测验 - 请求审查或调试 Python 代码 - 请求 Python 项目实战指导(爬虫、数据分析、Web 开发等入门项目) - 泛化表述如"教我 Python""我想学编程""Python 怎么写""帮我学 Python" 此 skill

下载
x = 10
def func():
  x = 20
  print(x)
func() # 输出 20
print(x) # 输出 10

如果想在函数里修改全局变量,必须用global关键字声明。

x = 10
def func():
  global x
  x = 20
func()
print(x) # 输出 20

嵌套函数与nonlocal关键字

当函数嵌套时,内层函数可以读取外层函数的变量,但不能直接修改。要修改需使用nonlocal。

def outer():
  x = 10
  def inner():
    nonlocal x
    x = 20
  inner()
  print(x)
outer() # 输出 20

没有nonlocal,inner函数中的x会被当成新的局部变量,外层x不会变。

实际练习建议

最快掌握的方法是动手写几个嵌套函数,故意不加global或nonlocal,观察输出结果。再逐步加上关键字对比变化。常见误区包括:

  • 误以为函数内部能直接改全局变量
  • 在if或for块中定义变量,误以为有独立作用域(其实没有)
  • 闭包中引用外层变量时,未理解延迟绑定问题

基本上就这些。多试几次,作用域的逻辑自然就清晰了。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3040

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

269

2026.02.03

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

4745

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

1990

2025.09.18

c++ 全局变量
c++ 全局变量

本专题整合了c++全局变量的使用、定义、作用域等等内容,阅读专题下面的文章了解更多详细内容。

199

2026.03.17

go语言闭包相关教程大全
go语言闭包相关教程大全

本专题整合了go语言闭包相关数据,阅读专题下面的文章了解更多相关内容。

4553

2025.07.29

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

40

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
前端学科面试题大全(第一季)
前端学科面试题大全(第一季)

共26课时 | 3.8万人学习

Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn