iOS的runtime的理解以及常用的使用场景有哪些
Python常量和枚举
在Python中,常量通常通过命名约定实现(全大写字母),但实际值可修改;枚举则通过`enum`模块提供类型安全的常量集合。以下是核心概念和用法:
1. 常量实现
约定方式:使用全大写变量名,仅作为开发者约定
python
MAX_USERS = 100 # 常量约定
PI = 3.1415926
特性:无强制保护,值仍可被修改(如`MAX_USERS = 200`)
2. 枚举(`enum`模块)
作用:创建具名常量集合,确保值唯一性和类型安全
基本用法:
python
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
#枚举核心特性
| 特性 | 说明 | 示例 |
|---------------------|----------------------------------------------------------------------|-------------------------------|
| 成员访问 | 通过点号或值访问 | `Color.RED` 或 `Color(1)` |
| 防止重复值 | 默认允许相同值,使用`@unique`装饰器强制唯一性 | `@unique class Status: ...` |
| 自动赋值 | 通过`auto()`自动生成值 | `YELLOW = auto()` |
| 迭代与比较 | 支持遍历和等值比较(`is`或`==`),但不可大小比较 | `list(Color)` → `[Color.RED, ...]` |
3. 高级枚举类型
`IntEnum`:继承`int`的枚举,支持整数运算
python
class Priority(IntEnum):
LOW = 1
MEDIUM = 2
HIGH = 3
print(Priority.LOW < Priority.MEDIUM) # True
`Flag`:支持位运算的组合枚举
python
class Permissions(Flag):
READ = 1
WRITE = 2
EXECUTE = 4
access = Permissions.READ | Permissions.WRITE
4. 最佳实践示例
python
from enum import Enum, unique, auto
@unique
class HttpStatus(Enum):
OK = 200
CREATED = 201
BAD_REQUEST = 400
NOT_FOUND = 404
SERVER_ERROR = auto() # 自动赋值500
# 使用场景
def handle_response(code: HttpStatus):
match code:
case HttpStatus.OK:
print(成功n case HttpStatus.NOT_FOUND:
print(未找到n
handle_response(HttpStatus.OK) # 输出:请求成功
关键优势
- 类型安全:避免魔法数字(如直接使用`200`)
- 可读性:`HttpStatus.OK` 比 `200` 更语义化
- 扩展性:支持添加关联数据(如错误描述)
- 错误预防:尝试无效值会触发`ValueError`
> 注意:枚举成员为单例,通过`is`比较比`==`更高效。
