想要写出灵活的代码?先搞懂变量和常量的“变与不变”
你有没有想过,为什么程序里有些东西必须锁定,有些却又可以随意更换?比如计算圆的面积时,π是亘古不变的常量,而半径却是每次可变的变量。这不仅仅是为了规范,更是编程思维的基石——搞懂“变”与“不变”,你的代码才能既灵活又可靠。
变量:那个可以随时换东西的盒子
变量就像你书包里的空间。今天装课本,明天装零食,书包还是那个书包,但内容随心变。在Python里,用 = 就能把数据“装”进变量:
age = 10
print(age) # 10
age = 11
print(age) # 11
注意,这里的 age 只是名字,它指向的值可以随时替换。你甚至可以把变量用在计算中:
age = 10
next_year = age + 1
print(next_year) # 11
变量能装什么?数字、文字、布尔值、列表……几乎所有东西。比如记录零花钱和游戏名:
money = 20
game = "Minecraft"
is_fun = True
变量命名那些坑
命名有规矩:字母、数字、下划线,但不能以数字开头。大小写敏感——Age 和 age 是两码事。还有几个关键词不能用,比如 if、for、class。
来看一个经典题目:
以下哪个是Python中合法的变量名?
这题考的就是命名规则。常见陷阱:2score(数字开头)、my-name(短横线不行)、class(关键字)。合法的是 score2、my_name 这类。记住:Python的关键字列表里,True、False、None 也是,别用来当变量名。如果拿不准,随手在交互环境里敲个 print(2score) 试试——报错就是非法。
常量:那个刻在石头上的数字
常量代表不变的值,比如圆周率 π ≈ 3.14,或者你的生日。程序员用全大写命名来约定“别改我”:
PI = 3.14
BIRTH_MONTH = 7
但Python并没有强制保护——你依然可以写 PI = 3.0 让程序跑起来。这就像在考场上把准考证号涂改掉,虽然没人当场抓你,但后续改卷的人会摸不着头脑。规则是给别人看的,也是给自己看的。
为什么需要常量?
看一个场景:计算多个圆的面积。半径变化,π不变。把π定义为常量,代码自文档化:
PI = 3.14159
radius = 5
area = PI * radius * radius
如果你需要更精确的π,只需要改常量一处。否则,如果你在代码里硬编码了10处 3.14,改起来既麻烦又容易漏。
另一个题目说:
在Python中,常量一旦定义就不能修改。
这题考的是对Python常量机制的认知。答案是错误——Python没有真正的常量,只是约定。但为什么说它“不能修改”?因为遵守约定的人绝不会改,而违背约定的人已经丢了编程素养。所以,题目陷阱在于“一旦定义就不能修改”把约定说成了语法强制。你写 PI = 3.0 不会报错,但这段代码已经不合格了。
新手最常犯的4个错
- 大小写写错:
name = "小明"却写print(Name)—— 报错。Python不认“长得很像”的名字。 - 没赋值就使用:
print(total)但之前没total = ...—— 抛出NameError。记住:变量必须先有值。 - 手滑改了常量:
PI = 3.14后面又PI = 3.0—— 语法没错,但破坏了可读性。一个好习惯是:所有全大写的变量,绝对不给它第二次赋值。 - 变量名用了关键字:
if = 10—— 报错,因为if是控制流关键字。牢记Python关键字列表。
一个完整的示例:计算多个圆面积
把变量和常量的配合展现出来:
PI = 3.14159
radius1 = 3
radius2 = 5
radius3 = 10
area1 = PI * radius1 * radius1
area2 = PI * radius2 * radius2
area3 = PI * radius3 * radius3
print("半径为3的圆面积:", area1) # 28.27431
print("半径为5的圆面积:", area2) # 78.53975
print("半径为10的圆面积:", area3) # 314.159
# 变量可以改,常量别碰
radius1 = 4
area1 = PI * radius1 * radius1
print("半径改为4的圆面积:", area1) # 50.26544
运行后看到,radius1 变了,面积也随之变,而 PI 始终如一。这就是“变与不变”协作的威力。
写在最后
变量和常量看似简单,但它们是程序逻辑的骨架。变量让你能灵活处理动态数据,常量让你守住规则的边界。下一步,你可以学习数据类型(整数、浮点数、字符串的区别),以及用 input() 让用户动态输入,再用常量和变量进行计算,写一个真正能交互的小程序。
记住:编程不是背诵语法,而是理解“什么该变,什么不该变”的设计思维。当你开始纠结“这里该用变量还是常量”时,你已经超越了初学阶段。
关于作者
我是赵老师,持有 NOI 信息学奥赛教练证书,拥有 15 年以上的软件开发经验,从事信息学少儿编程教学已有 8 年时间。
这些年累计帮助 多名 学生通过编程特长升入自己心仪的目标学校。
如果你在编程学习上有任何疑问,欢迎联系我:18620372957(微信同号)