元素码农
基础
UML建模
数据结构
算法
设计模式
网络
TCP/IP协议
HTTPS安全机制
WebSocket实时通信
数据库
sqlite
postgresql
clickhouse
后端
rust
go
java
php
mysql
redis
mongodb
etcd
nats
zincsearch
前端
浏览器
javascript
typescript
vue3
react
游戏
unity
unreal
C++
C#
Lua
App
android
ios
flutter
react-native
安全
Web安全
测试
软件测试
自动化测试 - Playwright
人工智能
Python
langChain
langGraph
运维
linux
docker
工具
git
svn
🌞
🌙
目录
▶
Python基础语法
Python环境安装与配置
第一个Python程序
变量与数据类型
字面量详解
基本运算符
流程控制语句
包管理与虚拟环境
▶
Python数据结构
列表(List)详解
元组(Tuple)使用指南
字典(Dict)完全解析
集合(Set)操作大全
▶
函数与模块
函数定义与参数传递
Lambda表达式
模块导入与使用
常用内置函数
▶
面向对象编程
类与对象
继承与多态
魔术方法解析
装饰器原理与应用
▶
Python类型系统
类型注解(Type Hints)
Pydantic基础
Pydantic高级特性
typing模块基础
泛型类型详解
泛型类详解
Callable类型详解
Awaitable类型详解
类型变量与约束
类型别名与Protocol
TypedDict详解
Annotated类型
Reducer类型
类型检查工具使用
类型注解最佳实践
▶
关键字
pass关键字
raise关键字
global关键字
nonlocal关键字
yield关键字
assert关键字
with关键字
async/await关键字
▶
包管理
pip包管理基础
虚拟环境管理
包管理工具对比
requirements.txt规范
依赖管理与requirements.txt
setup.py配置说明
Poetry项目管理工具
Conda包管理系统
打包与发布Python包
PyPI发布流程
私有PyPI仓库
▶
Python高级特性
迭代器与生成器
多线程编程
协程与异步IO
元编程入门
反射机制详解
描述符协议
上下文管理器协议
垃圾回收机制
内存管理深度解析
性能优化指南
▶
文件与异常处理
文件读写操作
JSON数据解析
异常处理机制
上下文管理器
发布时间:
2025-03-30 09:51
↑
☰
# global关键字 `global`关键字是Python中用于在函数内部声明全局变量的关键字。当你需要在函数内部修改全局变量时,必须使用`global`关键字进行声明。 ## 基本用法 ```python counter = 0 # 全局变量 def increment(): global counter # 声明使用全局变量 counter += 1 # 修改全局变量 print(f"当前计数:{counter}") increment() # 输出:当前计数:1 increment() # 输出:当前计数:2 ``` ## 使用场景 1. **全局计数器**:当需要在多个函数之间共享计数值时。 2. **全局配置**:管理程序级别的配置参数。 3. **状态管理**:维护程序的全局状态。 ## 注意事项 1. **谨慎使用**:过度使用全局变量会使代码难以维护和测试。 2. **命名冲突**:全局变量可能与局部变量发生命名冲突。 3. **声明位置**:`global`声明应该在变量使用之前。 ## 错误示例 ```python count = 0 def wrong_increment(): count += 1 # UnboundLocalError: local variable 'count' referenced before assignment def correct_increment(): global count count += 1 # 正确用法 ``` ## 最佳实践 1. **尽量避免**:优先使用函数参数和返回值传递数据。 2. **文档化**:如果必须使用全局变量,请在文档中说明原因。 3. **集中管理**:将全局变量集中在配置模块中管理。 ```python # config.py APP_NAME = "MyApp" DEBUG_MODE = False def set_debug_mode(value): global DEBUG_MODE DEBUG_MODE = value ``` ## 替代方案 1. **类属性**:使用类的静态属性代替全局变量。 2. **配置对象**:使用专门的配置对象管理共享状态。 3. **依赖注入**:通过参数传递依赖,而不是使用全局变量。 ## 总结 `global`关键字虽然提供了在函数内修改全局变量的能力,但应该谨慎使用。在大多数情况下,有更好的设计模式可以替代全局变量的使用。合理使用`global`关键字可以简化某些特定场景的代码,但过度使用会降低代码的可维护性和可测试性。