变量

让我们尝试在 hello_world.py 中使用一个变量。在文件开头新增一行,修改第二行:

hello_world.py
message = "Hello Python world!"
print(message)

运行这个程序看看会发生什么。您应该会看到与之前相同的输出:

Hello Python world!

我们添加了一个名为 message 的变量。每个变量都连接到一个值,该值是与该变量关联的信息。在这种情况下,值是 "Hello Python world!" 文本。

添加变量会使 Python 解释器多做一些工作。当它处理第一行时,它将变量 message"Hello Python world!" 文本相关联。当它到达第二行时,它会将与 message 关联的值打印到屏幕上。

让我们通过修改 hello_world.py 来打印第二条消息来扩展这个程序。在 hello_world.py 中添加一个空行,然后添加两行新代码:

message = "Hello Python world!"
print(message)

message = "Hello Python Crash Course world!"
print(message)

现在当你运行 hello_world.py 时,你应该看到两行输出:

Hello Python world!
Hello Python Crash Course world!

您可以随时更改程序中变量的值,Python 将始终跟踪其当前值。

变量的命名和使用

Python 中使用变量时,需要遵守一些规则和指南。违反其中一些规则会导致错误;其他指南只是帮助您编写更易于阅读和理解的代码。使用变量时请务必牢记以下规则:

  • 变量名只能包含字母、数字和下划线。它们可以以字母或下划线开头,但不能以数字开头。例如,您可以调用变量 message_1 而不是 1_message

  • 变量名中不允许有空格,但可以使用下划线分隔变量名中的单词。例如,greeting_message 有效,但 greeting message 会导致错误。

  • 避免使用 Python 关键字和函数名作为变量名。例如,不要使用 print 作为变量名;Python 将其保留用于特定的编程目的。(请参阅第 466 页的 Python 关键字和内置函数 。)

  • 变量名称应该简短但具有描述性。例如,name 优于 nstudent_name 优于 s_nname_length 优于 length_of_persons_name

  • 使用小写字母 l 和大写字母 O 时要小心,因为它们可能会与数字 10 混淆。

学习如何创建好的变量名可能需要一些练习,尤其是当您的程序变得更加有趣和复杂时。当你编写更多的程序并开始通读其他人的代码时,你会更善于想出有意义的名字。

您此时使用的 Python 变量应该是小写的。使用大写字母不会出错,但变量名中的大写字母有特殊含义,我们将在后面的章节中讨论。

如何在使用变量时避免命名错误

每个程序员都会犯错误,而且大多数人每天都在犯错误。尽管优秀的程序员可能会制造错误,但他们也知道如何有效地响应这些错误。让我们看看您可能会在早期犯的错误,并学习如何修复它。

我们将编写一些故意生成错误的代码。输入以下代码,包括拼写错误的单词 mesage,以粗体显示:

message = "Hello Python Crash Course reader!"
print(mesage)

当你的程序出现错误时,Python 解释器会尽力帮助你找出问题所在。当程序无法成功运行时,解释器会提供回溯。回溯是解释器在尝试执行您的代码时在哪里遇到问题的记录。这是在您不小心拼错变量名称后 Python 提供的回溯示例:

Traceback (most recent call last):
File "hello_world.py", line 2, in <module> (1)
print(mesage) (2)
      ^^^^^^
NameError: name 'mesage' is not defined. Did you mean: 'message'? (3)
1 输出报告文件 hello_world.py 的第 2 行出现错误。
2 解释器显示这一行以帮助我们快速发现错误并告诉我们它发现了什么样的错误。
3 在这种情况下,它发现了名称错误并报告正在打印的变量 message 尚未定义。

Python 无法识别提供的变量名。名称错误通常意味着我们要么在使用变量之前忘记设置它的值,要么在输入变量名称时犯了拼写错误。如果 Python 发现一个与它无法识别的变量名称相似的变量名称,它会询问这是否是您要使用的名称。

在本例中,我们在第二行的变量名消息中省略了字母 sPython 解释器不会对您的代码进行拼写检查,但它会确保变量名的拼写一致。例如,观察当我们在定义变量的行中错误拼写 message 时会发生什么:

mesage = "Hello Python Crash Course reader!"
print(mesage)

在这种情况下,程序运行成功!

Hello Python Crash Course reader!

变量名称匹配,因此 Python 认为没有问题。编程语言是严格的,但它们无视拼写的好坏。因此,您在尝试创建变量名和编写代码时无需考虑英语拼写和语法规则。

许多编程错误是程序中一行简单的单字符拼写错误。如果您发现自己花了很长时间来寻找这些错误之一,这说明你的公司很好。许多经验丰富且才华横溢的程序员花费数小时来寻找这些微小的错误。试着一笑置之,然后继续前进,因为它会在你的编程生涯中频繁发生。

变量是标签

变量通常被描述为您可以在其中存储值的盒子。这个想法在您使用变量的前几次可能会有所帮助,但它并不是描述变量在 Python 内部如何表示的准确方法。最好将变量视为可以分配给值的标签。你也可以说一个变量引用了一个特定的值。

这种区别在您的初始程序中可能不会很重要,但值得早点学习而不是晚点学习。在某些时候,您会看到变量的意外行为,准确理解变量的工作原理将有助于您识别代码中发生的情况。

理解新编程概念的最好方法是尝试在您的程序中使用它们。如果你在做本书的练习时卡住了,试着做一些其他的事情。如果您仍然卡住,请复习该章的相关部分。如果您仍然需要帮助,请参阅附录 C 中的建议。

自己试试

编写一个单独的程序来完成这些练习中的每一个。使用遵循标准 Python 约定的文件名保存每个程序,使用小写字母和下划线,例如 simple_message.pysimple_messages.py

2-1.简单消息

将消息分配给变量,然后打印该消息。

2-2.简单消息

将消息分配给变量,并打印该消息。然后将变量的值更改为新消息,并打印新消息。