大家好!欢迎来到我们的Python修炼之旅。
在编程的世界里,无论你想要创造多么复杂的程序,都要从最基础的元素开始。今天,我们要聊的就是Python中最核心、也最常用的概念——变量(Variables)与常量(Constants),并且带大家初探一下变量这个魔法盒子里到底能装些什么(数据类型)。
准备好了吗?让我们一起揭开它们的神秘面纱吧!✨
📦 1. 什么是变量?
想象一下,你搬进了一个新家,家里有很多没有标记的储物箱。你把一本书放进一个箱子里,如果不贴上标签,下次找起来肯定会让人抓狂。
在Python中,变量就像是贴在内存这个“大储物箱”上的标签。
程序在执行过程中,需要在内存中分配空间来存放数据。为了方便我们找到和使用这些数据,我们就给这块内存地址起个名字,这个名字就是变量。之所以叫“变”量,是因为它的值在程序运行中是可以随时改变的。
简单来说:变量就是指向特定值的一个标签。
(看!就像这张图演示的一样,变量 a 就像一个标签,指向了内存中存放着 10 的那个小红盒子。)
✍️ 2. 变量的创建:简单粗暴!
在很多其他编程语言(比如C或Java)中,创建一个变量之前还要先“声明”它是什么类型,比如 int a = 10;。
但是在优雅的Python中,不需要这些繁文缛节!变量不需要提前声明,直接赋值就能创建!
创建的魔法公式: 变量名 = 变量值
这里的等号(=)可不是数学里的“等于”,在编程里它叫赋值运算符。它负责把右边的值,塞进左边名字代表的盒子里。
# 让我们来点实际操作:
var1 = 2 # 嘿,我创建了一个叫var1的变量,里面装着数字2
var2 = 3 # 接着,创建了var2,里面装着3
result = var1 + var2 # 让它们相加,把结果放进新盒子 result 里!
print(result) # 打印出来看看,输出结果: 5
# 变量里面不仅能装数字,还能装文字和小数!
name = "张三" # 装入字符串
age = 18 # 装入整数
weight = 80.5 # 装入浮点数(小数)
💡 进阶玩法:多变量同时创建 你想偷个懒?没问题,Python支持你:
# 多个变量赋予同一个值
var1 = var2 = var3 = 10
# 多个变量赋予不同的值(非常优雅,对吧?)
var4, var5, var6 = 10, 20, 30
🏷️ 3. 标识符命名规则:给变量起个好名字
在程序中,你可以自己命名的地方(比如变量名、函数名)都统称为标识符。 但是,起名字也是有规矩的,不能乱来!
🚨 绝对不能触碰的“红线”(命名规则):
只能包含字母、数字和下划线(
_)。绝对不能以数字开头! (
1name❌,name1✅)严格区分大小写。在Python眼里,
Name和name是两个完全不同的变量!不要和“关键字”撞衫。
🛑 什么是关键字?
Python内部保留了一些具有特殊功能的单词,这就是关键字。它们是Python的“专属VIP”,你不能用它们来做变量名。
下面这张表就是Python的关键字合集,混个眼熟即可,不用死记硬背哦:

🎨 程序员的“审美”:命名规范
虽然拼音(比如 mima = "123")机器也能看懂,但这会被同行鄙视的(笑)。为了让代码既好看又专业,我们通常采用以下三种命名法:
🐫 大驼峰命名法(UpperCamelCase):每个单词首字母都大写。如
UserName。🐪 小驼峰命名法(lowerCamelCase):第一个单词首字母小写,后面的大写。如
userName。🐍 蛇形命名法(snake_case):单词之间用下划线连接。如
user_name。(强烈推荐!这是最Pythonic的风格!)
🔄 4. 变量的修改与神奇的“交换”
为什么叫“变”量?因为它可以随时改变!Python会始终记录变量的最新值。
msg = "hello world"
print(msg) # 输出: hello world
# 直接覆盖它!
msg = "hello Python!"
print(msg) # 输出: hello Python!
🔥 高能预警:Python专属的变量交换技巧
假设你左手拿苹果(var1),右手拿香蕉(var2),你想把它们交换一下。在别的语言里,你可能需要第三只手(引入一个中间变量 temp)。 但在Python里,一行代码搞定,惊艳全场:
var1 = 2
var2 = 20
print(var1, var2) # 交换前,输出: 2 20
# 见证奇迹的时刻 👇
var1, var2 = var2, var1
print(var1, var2) # 交换后,输出: 20 2
(是不是酷毙了?!😎)
🗿 5. 常量:程序员的“君子协定”
聊完了善变的变量,我们来聊聊它的孪生兄弟——固执的常量(Constants)。
在程序中,有些值是我们一旦设定就不希望再被修改的。比如圆周率 $\pi$、一天的小时数(24)、或者你网站的默认配置参数。如果这些值在程序运行中被意外修改,可能会导致灾难性的后果。
不过,我们要说一个Python的残酷事实:Python其实并没有真正的常量机制!
在C、Java等语言中,有专门的关键字(如 const 或 final)来保护常量不被修改,一旦强行修改就会报错。但崇尚自由的Python并没有提供这种强制约束。
那怎么办?Python程序员们达成了一个默契的约定:把变量名的字母全部大写。
当你看到一个全大写的变量名时,就是在强烈暗示大家:“这是一个常量,虽然代码层面上你能改掉我,但请你尊重我,千万别动我!”
# 程序员之间的君子协定:全大写代表常量
PI = 3.1415926
MAX_CONNECTIONS = 1000
SYSTEM_VERSION = "v1.0.4"
# 强行修改虽然不会报错,但绝对不推荐!
# PI = 3 <-- 极其恶劣的代码行为,会被打手板的!
🗂️ 6. 变量里能装些什么?——初探数据类型
在前面我们说变量就像储物箱,既然是储物箱,里面装的东西自然分门别类。这就是编程里的数据类型。
Python中最基础的几种类型包括:
整型 (int):就是整数。Python的整型非常强大,不管你输入多么大的数字(比如
1_000_000_000_000_000),它永远会输出相应的数字,绝对不会出现其他语言里常见的“溢出”问题。浮点型 (float):带小数点的数字,比如
2.1或80.5。布尔型 (bool):只有两个值,
True(真)或False(假)。
🔍 探秘神兵利器:type() 和 isinstance()
想知道储物箱里装的是什么类型的宝贝?你可以借助 Python 提供的内置“透视镜”:
num1 = 10
# 使用 type() 打印对象的类型
print(type(num1)) # 输出: <class 'int'>
num2 = True
print(type(num2)) # 输出: <class 'bool'>
# 使用 isinstance() 判断变量是不是特定的类型
print(isinstance(num1, int)) # 输出: True
print(isinstance(num2, bool)) # 输出: True
print(isinstance(num2, int)) # 输出: False (布尔值严格来说不是普通的整型)
📍 变量的“门牌号”:id() 函数
我们在第一节说过,变量指向内存中的一个地址。那么怎么拿到这个实际的地址呢?使用 id() 函数即可获取对象在内存中的地址:
num1 = 10
num2 = 10
print(id(num1)) # 输出一串数字地址,如:140722378893384
print(id(num2)) # 输出: 140722378893384 (地址与 num1 完全相同!)
💡 小贴士:你会发现 num1 和 num2 的地址是一模一样的!为了节省内存,Python 默认会让相同的小整数指向同一个内存“盒子”。
但如果数字变得比较大:
num3 = 300
num4 = 300
print(id(num3)) # 输出地址如:2115682855216
print(id(num4)) # 输出地址如:2115682855472 (地址与 num3 不同了!)
你会发现它们的地址变得不一样了,这背后涉及到 Python 复杂的内存管理机制,我们以后再慢慢探索!
🎯 总结与练习
今天我们系统学习了编程中最基础的概念:
变量是贴在内存数据上的标签,随时可以改变最新值。
常量是用全大写字母表示的不应被改变的值,这是一种程序员间的契约精神。
数据类型决定了变量盒子里装的是整数 (int)、小数 (float) 还是真假 (bool),我们可以用
type()、isinstance()和id()来窥探它们的秘密。
编程就像搭积木,变量与常量就是我们最核心的那块积木。
📝 课后小练习源码合集: 建议你自己打开编辑器,把下面的代码敲一遍,感受一下它们的魔力吧!
"""
该案例演示了变量、常量与数据类型的完整使用过程
"""
# --- 1. 基础变量赋值与修改 ---
var1 = 10
var2 = 20
print("var1 + var2 = ", var1 + var2)
# 输出: var1 + var2 = 30
# 优雅地交换变量
a, b = 100, 200
a, b = b, a
print("交换后:", a, b)
# 输出: 交换后: 200 100
# --- 2. 认识常量 ---
GRAVITY = 9.8
print("地球重力加速度常数是:", GRAVITY)
# 输出: 地球重力加速度常数是: 9.8
# --- 3. 探索数据类型 ---
num_int = 1000000000000000 # Python不会溢出的大整数
is_python_fun = True
print("num_int 的类型是:", type(num_int))
# 输出: num_int 的类型是: <class 'int'>
print("判断 is_python_fun 是否为布尔型:", isinstance(is_python_fun, bool))
# 输出: 判断 is_python_fun 是否为布尔型: True
# 查看内存地址
x = 10
y = 10
print("x 的地址:", id(x))
# 输出: x 的地址: 140722378893384 (注意:你电脑上运行的这串数字可能不同)
print("y 的地址:", id(y))
# 输出: y 的地址: 140722378893384 (但一定和上面 x 的地址一模一样)
好啦,今天的分享就到这里。如果觉得有意思,别忘了点个赞!我们下期再见!🚀