变量和常量

学习如何在Python中创建和使用变量与常量,掌握命名规则和赋值操作

变量概述

在Python中,变量是存储数据值的容器。与其他编程语言不同,Python没有声明变量的命令,变量在第一次赋值时创建。

变量的作用

  • 存储数据值,以便在程序中使用
  • 为数据值提供一个有意义的名称
  • 使代码更易读和维护
  • 允许在程序中操作和修改数据

变量赋值

在Python中,使用等号(=)为变量赋值。变量不需要声明特定的类型,解释器会根据赋值自动推断变量的类型。

基本赋值

x = 10 # 整数变量
name = "Alice" # 字符串变量
is_student = True # 布尔变量
pi = 3.14 # 浮点数变量

动态类型

Python是动态类型语言,这意味着同一个变量可以被赋值为不同类型的值。

x = 10 # x是整数
print(x, type(x)) # 输出: 10
x = "Hello" # x现在是字符串
print(x, type(x)) # 输出: Hello

命名规则

在Python中,变量名必须遵循特定的规则和最佳实践:

合法的变量名

  • 变量名必须以字母(A-Z或a-z)或下划线(_)开头
  • 变量名的其余部分可以包含字母、数字(0-9)或下划线
  • 变量名区分大小写(例如,age和Age是不同的变量)
age = 25 # 合法
_score = 90 # 合法(私有变量约定)
student_name = "Bob" # 合法(使用下划线的蛇形命名法)
age2 = 30 # 合法(包含数字)

非法的变量名

    非法的变量名

    • 变量名不能以数字开头
    • 变量名不能包含特殊字符(如!、@、#、$等)
    • 变量名不能是Python的关键字(如if、else、for等)
    # 非法:以数字开头
    2number = 100 # 错误
    # 非法:包含特殊字符
    user@name = "John" # 错误
    # 非法:使用关键字
    if = 5 # 错误

    最佳实践

    • 使用描述性的变量名,使代码更易读
    • 对于多个单词的变量名,推荐使用蛇形命名法(snake_case)
    • 避免使用单个字符作为变量名,除非在循环中
    • 变量名应简洁明了,避免过长或过短
    # 好的命名
    total_score = 95
    is_student = True
    max_speed = 180.5
    # 不好的命名
    a = 95 # 不明确
    xyz = True # 无意义
    really_long_variable_name_that_doesnt_fit_on_one_line = 180.5 # 过长

多变量赋值

Python允许在一行中为多个变量赋值,这使代码更简洁。

同时赋值多个变量

x, y, z = 1, 2, 3 # 同时为三个变量赋值
print(x) # 输出: 1
print(y) # 输出: 2
print(z) # 输出: 3
name, age, is_student = "Alice", 25, True # 不同类型的变量
print(name) # 输出: Alice
print(age) # 输出: 25
print(is_student) # 输出: True

使用相同值赋值多个变量

x = y = z = 10 # 所有变量赋值为相同的值
print(x) # 输出: 10
print(y) # 输出: 10
print(z) # 输出: 10

交换变量值

Python中可以不使用临时变量交换两个变量的值。

a = 5
b = 10
# 交换变量值
a, b = b, a
print(a) # 输出: 10
print(b) # 输出: 5

常量

常量是一种特殊的变量,其值在程序运行期间不应改变。在Python中,没有内置的常量类型,但有约定的命名规则来表示常量。

常量命名约定

在Python中,通常使用全大写字母和下划线来命名常量,以表示它们的值不应该被修改。

# 常量定义
PI = 3.14159
MAX_SPEED = 120
WEEKDAYS = 7
# 使用常量
radius = 5
circumference = 2 * PI * radius
print(circumference) # 输出: 31.4159

常量的性质

  • Python中没有真正的常量,这只是一种约定
  • 如果你尝试修改常量的值,Python不会阻止你,但这被认为是不好的编程实践
  • 常量通常在模块级别定义,即在任何函数或类之外

注意

虽然Python没有强制的常量机制,但作为开发者,应该尊重命名约定,不修改被定义为常量的变量的值。

变量类型

如前所述,Python是一种动态类型语言,变量的类型由赋给它的值决定。

查看变量类型

可以使用type()函数查看变量的类型。

x = 10
print(type(x)) # 输出:
x = "Hello"
print(type(x)) # 输出:
x = 3.14
print(type(x)) # 输出:
x = True
print(type(x)) # 输出:

动态类型与静态类型

动态类型(Python)
  • 变量类型由赋值决定
  • 无需声明变量类型
  • 同一变量可以改变类型
  • 代码更灵活,但可能导致运行时类型错误
静态类型(如Java)
  • 必须声明变量类型
  • 变量类型不能改变
  • 编译器可以捕获类型错误
  • 代码更严格,但可能更安全

内存引用

在Python中,变量实际上是对内存中对象的引用,而不是对象本身。理解这一点对于理解赋值和对象操作很重要。

引用赋值

当你将一个变量赋值给另一个变量时,实际上是复制了引用,而不是对象本身。

a = 10 # 创建一个整数对象,a引用它
b = a # b现在引用同一个对象
print(a, b) # 输出: 10 10
print(id(a) == id(b)) # 输出: True(同一对象)
b = 20 # b现在引用一个新对象
print(a, b) # 输出: 10 20
print(id(a) == id(b)) # 输出: False(不同对象)

不可变对象与可变对象

Python中的对象分为不可变对象(如整数、字符串、元组)和可变对象(如列表、字典、集合)。

不可变对象示例
x = 5
y = x # y引用与x相同的对象
x = 10 # 创建一个新对象,x现在引用它
print(x, y) # 输出: 10 5
可变对象示例
a = [1, 2, 3] # 创建一个列表
b = a # b引用同一个列表
b.append(4) # 修改列表
print(a) # 输出: [1, 2, 3, 4]
print(b) # 输出: [1, 2, 3, 4]
print(id(a) == id(b)) # 输出: True(同一对象)

作业

完成以下作业,巩固所学的变量和常量知识:

作业1:变量赋值与类型

编写Python代码完成以下操作:

  1. 创建一个名为"name"的变量,赋值为你的姓名
  2. 创建一个名为"age"的变量,赋值为你的年龄
  3. 创建一个名为"is_student"的变量,根据你的情况赋值为True或False
  4. 使用type()函数检查每个变量的类型并打印结果

作业2:多变量赋值

使用一行代码为三个变量"x"、"y"和"z"赋值,分别为10、20和30。 然后交换x和z的值,并打印交换后的结果。

作业3:常量应用

定义一个常量"PI",值为3.14159。编写代码计算半径为5的圆的面积和周长, 使用定义的常量PI,并打印计算结果。

作业4:综合应用

假设你正在开发一个简单的AI助手应用。创建适当的变量来存储以下信息:

  • 助手名称(字符串)
  • 版本号(浮点数)
  • 是否联网(布尔值)
  • 支持的语言数量(整数)
  • 最大响应长度(整数常量)

为这些变量赋适当的值,并打印一条消息,展示这些信息。