跳到主要内容

Python 变量

什么是变量?

变量是编程中最基本的概念之一,可以将其想象成一个带标签的容器,用于存储数据。在Python中,变量允许我们给数据赋予名称,方便在程序中引用和操作这些数据。

提示

Python变量不需要声明类型,这使得Python成为一种动态类型语言,非常灵活和友好!

变量的基本使用

变量命名和赋值

在Python中,创建变量非常简单,使用赋值运算符(=)即可:

python
# 创建一个名为message的变量,并赋值为"Hello, Python!"
message = "Hello, Python!"
print(message)

输出:

Hello, Python!

变量命名规则

Python变量命名需要遵循一定的规则:

  1. 变量名只能包含字母、数字和下划线(_
  2. 变量名不能以数字开头
  3. 变量名不能是Python的关键字(如if, for, while等)
  4. 变量名区分大小写(nameName 是两个不同的变量)
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}")

最佳实践

  1. 使用有意义的变量名称:变量名应该反映其存储的数据的用途。
python
# 不好的例子
x = 28
y = "Alice"

# 好的例子
age = 28
name = "Alice"
  1. 保持变量命名风格一致:坚持使用蛇形命名法(snake_case)。
python
first_name = "John"
last_name = "Doe"
date_of_birth = "1990-01-01"
  1. 避免使用单字母变量名(除非是临时的循环计数器)。
python
# 循环计数器使用单字母是可以接受的
for i in range(5):
print(i)

# 但对于其他用途,应该使用描述性名称
# 不好: t = 25
temperature = 25 # 好的命名

总结

变量是Python编程的基础,正确理解和使用变量对于编写有效的Python程序至关重要。本教程中,我们学习了:

  • 变量的基本概念和创建方法
  • 变量命名规则和最佳实践
  • Python变量的动态类型特性
  • 变量赋值和引用的工作原理
  • 全局变量和局部变量的区别
  • 常量的约定使用方法
  • 变量在实际应用场景中的使用

练习

  1. 创建一个Python程序,使用变量存储你的姓名、年龄和喜欢的编程语言,并打印这些信息。

  2. 编写一个简单的银行账户程序,使用变量来跟踪账户余额,并实现存款和取款功能。

  3. 创建一个BMI(身体质量指数)计算器,使用变量存储身高和体重,并计算BMI值。

  4. 挑战题:编写一个程序,使用变量交换技术对包含5个元素的列表进行排序。

延伸阅读