Python 变量
什么是变量?
变量是编程中最基本的概念之一,可以将其想象成一个带标签的容器,用于存储数据。在Python中,变量允许我们给数据赋予名称,方便在程序中引用和操作这些数据。
提示
Python变量不需要声明类型,这使得Python成为一种动态类型语言,非常灵活和友好!
变量的基本使用
变量命名和赋值
在Python中,创建变量非常简单,使用赋值运算符(=
)即可:
python
# 创建一个名为message的变量,并赋值为"Hello, Python!"
message = "Hello, Python!"
print(message)
输出:
Hello, Python!
变量命名规则
Python变量命名需要遵循一定的规则:
- 变量名只能包含字母、数字和下划线(
_
) - 变量名不能以数字开头
- 变量名不能是Python的关键字(如
if
,for
,while
等) - 变量名区分大小写(
name
和Name
是两个不同的变量)
python
# 有效的变量名
user_name = "Alice"
age = 25
_private = "私有变量"
userName2 = "Bob"
# 无效的变量名
# 2user = "Invalid" # 不能以数字开头
# user-name = "Invalid" # 不能使用连字符
# if = "Invalid" # 不能使用关键字
警告
虽然Python允许使用中文作为变量名,但为了代码的可移植性和可读性,建议使用英文命名变量。
Python 的命名风格
Python社区推荐使用蛇形命名法(Snake Case):
python
user_name = "Alice"
first_number = 10
is_active = True
变量的特性
动态类型
Python是动态类型语言,这意味着一个变量可以在不同时间存储不同类型的数据:
python
x = 10 # x是整数
print(x) # 输出: 10
x = "hello" # 现在x是字符串
print(x) # 输出: hello
x = [1, 2, 3] # 现在x是列表
print(x) # 输出: [1, 2, 3]
变量的赋值和引用
在Python中,变量实际上是对象的引用。当我们创建变量时,Python创建了一个对象并将变量指向该对象:
python
a = 5
b = a # b引用与a相同的对象
print(a) # 输出: 5
print(b) # 输出: 5
a = 10 # a现在引用了新的对象
print(a) # 输出: 10
print(b) # 输出: 5(b仍然引用原来的对象)
对于可变对象(如列表),情况有所不同:
python
list1 = [1, 2, 3]
list2 = list1 # list2引用与list1相同的列表对象
list1.append(4) # 修改了list1引用的对象
print(list1) # 输出: [1, 2, 3, 4]
print(list2) # 输出: [1, 2, 3, 4](list2也被"影响"了)
使用id()
检查对象标识
我们可以使用id()
函数查看变量引用的对象的内存地址:
python
x = 5
y = 5
z = x
print(id(x)) # 例如: 140705767163248
print(id(y)) # 例如: 140705767163248(相同,因为Python缓存了小整数)
print(id(z)) # 例如: 140705767163248(与x相同)
变量的多重赋值
Python允许在一行代码中为多个变量赋值:
python
# 为多个变量赋相同的值
x = y = z = 10
print(x, y, z) # 输出: 10 10 10
# 同时为多个变量赋不同的值
a, b, c = 1, 2, 3
print(a, b, c) # 输出: 1 2 3
# 变量交换的简便方法
a, b = 5, 10
print(a, b) # 输出: 5 10
a, b = b, a # 交换变量值
print(a, b) # 输出: 10 5
全局变量和局部变量
Python中,变量的作用域取决于它们在代码中的定义位置:
python
# 全局变量
global_var = "我是全局变量"
def my_function():
# 局部变量
local_var = "我是局部变量"
print(global_var) # 可以访问全局变量
print(local_var) # 可以访问局部变量
my_function()
print(global_var) # 可以访问全局变量
# print(local_var) # 错误!不能在函数外部访问局部变量
如果想在函数内部修改全局变量,需要使用global
关键字:
python
counter = 0
def update_counter():
global counter # 声明我们要使用全局变量
counter += 1
print(counter)
update_counter() # 输出: 1
update_counter() # 输出: 2
print(counter) # 输出: 2
常量
虽然Python没有内置的常量类型,但按照惯例,全大写的变量名用于表示不应改变的值:
python
PI = 3.14159
MAX_CONNECTIONS = 100
# 虽然技术上可以修改,但按照约定不应该这样做
# PI = 3.14 # 不推荐
变量的实际应用
应用场景1:温度转换器
python
# 温度转换:摄氏度到华氏度
celsius = 30
fahrenheit = (celsius * 9/5) + 32
print(f"{celsius}°C 等于 {fahrenheit}°F") # 输出: 30°C 等于 86.0°F
# 华氏度到摄氏度
fahrenheit = 98.6
celsius = (fahrenheit - 32) * 5/9
print(f"{fahrenheit}°F 等于 {celsius:.1f}°C") # 输出: 98.6°F 等于 37.0°C
应用场景2:购物车计算
python
# 购物车计算
item1_price = 25.99
item1_quantity = 2
item2_price = 15.50
item2_quantity = 3
# 计算总价
subtotal = item1_price * item1_quantity + item2_price * item2_quantity
tax_rate = 0.08 # 8%税率
tax = subtotal * tax_rate
total = subtotal + tax
print(f"小计: ¥{subtotal:.2f}")
print(f"税额: ¥{tax:.2f}")
print(f"总计: ¥{total:.2f}")
输出:
小计: ¥98.48
税额: ¥7.88
总计: ¥106.36
应用场景3:用户信息管理
python
# 用户信息管理
username = "alice_wong"
age = 28
is_active = True
points = 1250.75
# 显示用户信息
print("用户信息:")
print(f"用户名: {username}")
print(f"年龄: {age}")
print(f"账户状态: {'活跃' if is_active else '非活跃'}")
print(f"积分: {points}")
# 更新用户信息
age += 1
points += 100
print("\n更新后的用户信息:")
print(f"用户名: {username}")
print(f"年龄: {age}")
print(f"账户状态: {'活跃' if is_active else '非活跃'}")
print(f"积分: {points}")
最佳实践
- 使用有意义的变量名称:变量名应该反映其存储的数据的用途。
python
# 不好的例子
x = 28
y = "Alice"
# 好的例子
age = 28
name = "Alice"
- 保持变量命名风格一致:坚持使用蛇形命名法(snake_case)。
python
first_name = "John"
last_name = "Doe"
date_of_birth = "1990-01-01"
- 避免使用单字母变量名(除非是临时的循环计数器)。
python
# 循环计数器使用单字母是可以接受的
for i in range(5):
print(i)
# 但对于其他用途,应该使用描述性名称
# 不好: t = 25
temperature = 25 # 好的命名
总结
变量是Python编程的基础,正确理解和使用变量对于编写有效的Python程序至关重要。本教程中,我们学习了:
- 变量的基本概念和创建方法
- 变量命名规则和最佳实践
- Python变量的动态类型特性
- 变量赋值和引用的工作原理
- 全局变量和局部变量的区别
- 常量的约定使用方法
- 变量在实际应用场景中的使用
练习
-
创建一个Python程序,使用变量存储你的姓名、年龄和喜欢的编程语言,并打印这些信息。
-
编写一个简单的银行账户程序,使用变量来跟踪账户余额,并实现存款和取款功能。
-
创建一个BMI(身体质量指数)计算器,使用变量存储身高和体重,并计算BMI值。
-
挑战题:编写一个程序,使用变量交换技术对包含5个元素的列表进行排序。
延伸阅读
- Python官方文档 - 数据模型
- PEP 8 - Python代码风格指南
- 《Python编程:从入门到实践》第2章:变量和简单数据类型