一、变量(Variable)
变量的主要作用是存储可以被修改的数据,在Python里,变量具有以下特点:
1. 动态类型
Python属于动态类型语言,在定义变量时无需提前声明类型,系统会依据所赋的值自动确定变量类型。
python
x = 10 # 此时x是整数类型
x = "Hello" # 现在x变为字符串类型
2. 变量的赋值
通过`=`操作符来给变量赋值,变量名需要遵循一定的命名规则(只能包含字母、数字和下划线,并且不能以数字开头)。
python
age = 25
name = "Alice"
is_student = True
3. 内存引用
变量其实是对内存中对象的引用。
python
a = [1, 2, 3]
b = a # b和a引用的是同一个列表对象
b.append(4)
print(a) # 输出: [1, 2, 3, 4]
4. 作用域
变量的作用域由其定义的位置决定,主要分为全局变量和局部变量。
python
x = 10 # 这是一个全局变量
def func():
x = 20 # 此x是局部变量,只在函数内部有效
print(x)
func() # 输出: 20
print(x) # 输出: 10
二、常量(Constant)
在Python中,并没有内置的常量类型,不过有一些约定俗成的规范来表示常量:
1. 命名规范
通常用全大写字母加下划线的方式来命名常量,以此提醒开发者不要修改该变量的值。
python
PI = 3.14159
MAX_SPEED = 120
2. 模块级常量
可以把常量定义在模块中,避免被其他代码修改。
python
# config.py 文件
DB_HOST = "localhost"
DB_PORT = 5432
3. 伪常量(使用类或枚举)
若想更严格地实现常量,可以借助类或枚举。
python
from enum import Enum
class Colors(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Colors.RED) # 输出: Colors.RED
# Colors.RED = 4 # 这行代码会报错,因为不能修改枚举值
三、变量和常量的主要区别
| **特性** | **变量** | **常量** |
|------------------|-------------------------|-------------------------|
| **命名规范** | 小写字母,可使用驼峰式或下划线分隔 | 全大写字母加下划线 |
| **值是否可变** | 可以修改 | 通常不修改(约定俗成) |
| **类型** | 动态类型 | 动态类型 |
| **使用场景** | 存储会变化的数据 | 存储固定不变的值,如配置信息 |
四、注意事项
1. **常量的不可变性**
Python中的常量只是一种约定,实际上还是可以被修改的。如果需要更严格的不可变性,可以通过自定义类并限制属性修改来实现。
python
class Constants:
def __setattr__(self, name, value):
if hasattr(self, name):
raise AttributeError("Cannot modify constant value")
self.__dict__[name] = value
const = Constants()
const.PI = 3.14
# const.PI = 3.14159 # 这行代码会报错
2. **避免使用全局变量**
虽然全局变量在某些情况下很方便,但过度使用会让代码变得难以理解和维护。建议优先使用局部变量和参数传递。
3. **常量的作用域**
常量通常在模块级别定义,这样可以在整个模块中使用。
掌握变量和常量的正确使用方法,是编写清晰、可维护代码的基础。