Python变量与常量概述
在Python编程中,变量和常量是存储数据的基本单元。理解它们的概念和正确使用方式是成为高效Python开发者的关键一步。
变量
变量是存储数据的命名容器,其值可以在程序执行过程中改变。
常量
常量是值在程序执行期间不会改变的命名容器,通常用于表示固定值。
变量基础
Python中的变量不需要显式声明类型。当给变量赋值时,解释器会根据值自动推断类型。
变量声明与赋值
在Python中,使用等号=
进行变量赋值:
# 基本变量赋值
name = "Alice" # 字符串类型
age = 30 # 整数类型
height = 1.75 # 浮点数类型
is_student = True # 布尔类型
# 打印变量
print(name) # 输出: Alice
print(age) # 输出: 30
print(height) # 输出: 1.75
print(is_student) # 输出: True
# 重新赋值
age = 31
print(age) # 输出: 31
多变量赋值
Python允许同时为多个变量赋值:
# 同时为多个变量赋相同的值
x = y = z = 10
print(x, y, z) # 输出: 10 10 10
# 同时为多个变量赋不同的值
a, b, c = 5, 3.2, "Hello"
print(a, b, c) # 输出: 5 3.2 Hello
# 交换变量值
x = 1
y = 2
x, y = y, x
print(x, y) # 输出: 2 1
变量命名规则
良好的命名习惯可以提高代码可读性和可维护性。
合法命名规则
- 以字母或下划线开头
- 后续字符可以是字母、数字或下划线
- 区分大小写(
age
和Age
是不同的变量) - 不能使用Python关键字作为变量名
命名风格
- 蛇形命名法(snake_case): 单词小写并用下划线分隔(Python推荐)
user_name
,total_count
- 驼峰命名法(camelCase): 首单词小写,后续单词首字母大写
userName
,totalCount
- 帕斯卡命名法(PascalCase): 每个单词首字母大写
UserName
,TotalCount
命名最佳实践
- 使用描述性的名称(避免使用
a
,x
等无意义名称) - 保持一致性(在整个项目中统一命名风格)
- 避免使用单个字符(除了简单的计数器如
i
,j
) - 避免使用Python内置函数名(如
list
,str
,dict
)
Python数据类型
Python是动态类型语言,变量类型在运行时确定。
数值类型
- int: 整数(如:5, -10, 1000)
- float: 浮点数(如:3.14, -0.001, 2.0)
- complex: 复数(如:3+5j)
文本类型
- str: 字符串(如:"Hello", 'Python')
序列类型
- list: 有序可变序列(如:[1, 2, 3])
- tuple: 有序不可变序列(如:(1, 2, 3))
- range: 不可变的数字序列(如:range(5))
映射类型
- dict: 键值对集合(如:{"name": "Alice", "age": 30})
集合类型
- set: 无序不重复元素集(如:{1, 2, 3})
- frozenset: 不可变集合
布尔类型
- bool: 布尔值(True或False)
类型检查与转换
# 检查变量类型
x = 10
print(type(x)) # 输出: <class 'int'>
y = "20"
print(type(y)) # 输出: <class 'str'>
# 类型转换
a = int("10") # 字符串转整数
b = float(5) # 整数转浮点数
c = str(3.14) # 浮点数转字符串
d = bool(0) # 整数转布尔值 (0为False, 非零为True)
变量作用域
作用域决定了变量在程序中的可见范围。
局部变量
在函数内部定义的变量,只能在函数内部访问。
def my_function():
local_var = "I'm local"
print(local_var)
my_function()
# 在函数外部无法访问 local_var
全局变量
在函数外部定义的变量,可以在整个模块中访问。
global_var = "I'm global"
def my_function():
print(global_var) # 可以访问全局变量
my_function()
print(global_var) # 在函数外部也可以访问
global关键字
要在函数内部修改全局变量,需要使用global
关键字:
count = 0
def increment():
global count # 声明使用全局变量
count += 1
increment()
print(count) # 输出: 1
常量
Python没有内置的常量类型,但开发者通常遵循约定来定义常量。
常量命名约定
在Python中,常量通常使用全大写字母命名,单词间用下划线分隔:
PI = 3.14159
MAX_USERS = 100
DEFAULT_TIMEOUT = 30
API_KEY = "a1b2c3d4e5"
创建真正的常量
虽然Python本身不强制常量不可变,但可以通过类实现真正的常量:
class Constants:
@property
def PI(self):
return 3.14159
@property
def GRAVITY(self):
return 9.8
const = Constants()
print(const.PI) # 输出: 3.14159
const.PI = 3.14 # 会引发AttributeError
变量与常量最佳实践
变量使用建议
- 使用描述性名称
- 遵循命名约定(snake_case)
- 避免使用全局变量,除非必要
- 避免使用单个字符命名(计数器除外)
- 初始化变量后再使用
常量使用建议
- 使用全大写命名
- 将常量集中在模块顶部或单独文件中
- 避免在代码中硬编码值
- 使用枚举表示一组相关常量
其他建议
- 避免使用Python关键字作为变量名
- 避免使用内置函数名作为变量名
- 使用类型提示提高代码可读性
- 删除不再使用的变量(使用
del
)
变量使用示例
# 好的变量命名实践
def calculate_circle_area(radius):
PI = 3.14159 # 常量使用大写
area = PI * radius ** 2
return area
# 使用类型提示
def greet_user(user_name: str) -> str:
greeting = f"Hello, {user_name}!"
return greeting
# 删除不再需要的变量
large_data = [x for x in range(1000000)]
# 处理large_data...
del large_data # 释放内存
发表评论