目录
通过上一节来引入
运行hello_world.py时,Python都做了些什么呢?
下面来深入研究一下。实际上,即便是运
行简单的程序,Python所做的工作也相当多:
print("Hello Python world!")
运行上述代码时,你将看到如下输出:
Hello Python world!
运行文件 hello_world.py时,末尾的.py指出这是一个Python程序,因此编辑器将使用Python解释器来运行它。Python解释器读取整个程序,确定其中每个单词的含义。例如,看到后面跟着圆括号的单词print时,解释器就将圆括号中的内容打印到屏幕。
编写程序时,编辑器会以各种方式突出程序的不同部分。例如,它知道print()是一个函数的名称,因此将其显示为某种颜色;
同理,它知道"Hello Python world!"不是 Python 代码,因此将其显示为另一种颜色。
这种功能称为语法突出,在刚开始编写程序时很有帮助。
在我看来,语法突出不仅可以用来帮助区分数据类型,更可以有效避免“视觉疲劳”。
例如(图片来源网络,侵删):
再如(图片来源网络,侵删):
2.1.1 变量的命名和使用
在Python 中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下述有关变量的规则。
·变量名只能包含字母、数字和下划线。变量名能以字母或下划线打头,但不能以数字打
头。例如,可将变量命名为message_1,但不能将其命名为1_message。
·变量名不能包含空格,但能使用下划线来分隔其中的单词。例如,变量名greeting_
message 可行,但变量名greetingmessage 会引发错误。
·不要将 Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,
如print。
·
·变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length
比 length_of_persons_name好。
·慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
要创建良好的变量名,需要经过一定的实践,在程序复杂而有趣时尤其如此。随着编写的程序越来越多,并开始阅读别人编写的代码,你将越来越善于创建有意义的变量名。
注意 就目前而言,应使用小写的Python变量名。虽然在变量名中使用大写字母不会导致错误,
但是大写字母在变量名中有特殊含义,将在本专栏后续进行讨论。
2.1.2 使用变量时避免命名错误
程序员都会犯错,而且大多数程序员每天都会犯错。虽然优秀的程序员也会犯错,但他们也知道如何高效地消除错误。下面来看一种你可能犯的错误,并学习如何消除它。
请输入下面的代码,包括其中拼写不正确、以粗体显示的单词mesage:
message = "Hello Python Crash Course reader!"
print(mesage)
程序存在错误时,Python解释器将竭尽所能地帮助你找出问题所在。程序无法成功运行时,解释器将提供一个traceback。traceback是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。下面是你不小心错误地拼写了变量名时,Python解释器提供的traceback:
Traceback (most recent call last):
File "hello_world.py", line 2, in <module>
print(mesage)
NameError: name 'mesage' is not defined
解释器指出,文件hello_world.py的第二行存在错误。它列出了这行代码,旨在帮助你快速找出错误,还指出了它发现的是什么样的错误。
在这里,解释器发现了一个名称错误,并报告打印的变量mesage 未定义:Python无法识别你提供的变量名。名称错误通常意味着两种情况:要么是使用变量前忘记给它赋值,要么是输入变量名时拼写不正确。
在这个示例中,第二行的变量名message 遗漏了字母s。Python解释器不会对代码做拼写检查,但要求变量名的拼写一致。例如,如果在代码的另一个地方也将message错误地拼写成了mesage,结果将如何呢?
mesage = "Hello Python Crash Course readerl"
print(mesage)
在这种情况下,程序将成功运行:
Hello Python Crash Course reader
编程语言要求严格,但并不关心拼写是否正确。因此,创建变量名和编写代码时,无须考虑英语中的拼写和语法规则——虽然编程语言对拼写的要求不太严格,但是良好的编程习惯和规范建议我们仍然应该关注拼写和语法规则,以提高代码的可读性。
很多编程错误都简单,只是在程序的某一行输错了一个字符。为找出这种错误而花费很长时间的大有人在。很多程序员天资聪颖、经验丰富,却为找出这种细微的错误花费数小时。你可能觉得这很好笑,但别忘了,在你的编程生涯中,经常会有同样的遭遇。
这确实是程序员常常会遇到的情况。有时候一个细微的错误可能导致整个程序出现问题,而找到这个错误却需要花费大量的时间和精力。即使是经验丰富的程序员也不能避免这种情况,因为编程是一个复杂的过程,充满了各种可能性。因此,我们应该保持耐心和毅力,不断学习和提高自己的调试能力,以便更好地解决这些问题。
2.1.3 变量是标签
变量常被描述为可用于存储值的盒子。在你刚接触变量时,这种定义可能很有帮助,但它并没有准确描述Python 内部表示变量的方式。一种好得多的定义是,变量是可以赋给值的标签,也可以说变量指向特定的值。
刚学习编程时,这种差别可能意义不大,但越早知道越好。
你迟早会遇到变量的行为出乎意料的情形,此时如果对变量的工作原理有准确的认识,将有助于搞清楚代码是如何运行的。
变量是存储和操作数据的容器,它们具有不同的作用域和生命周期。在编写代码时,我们对变量进行声明和赋值,以便在程序中使用它们。
然而,有时候变量的行为可能会出乎意料。这可能是因为我们对变量的作用域、生命周期或值的变化不够了解——例如,当在一个函数中声明一个局部变量时,在函数执行完毕后,该变量的值将会被销毁。如果我们在函数外部尝试访问这个变量,它将无法被识别。
另一个例子是变量的值可能会在程序的不同部分发生变化。这可能是由于变量被多个函数共享,或者在程序的不同部分被重新赋值。如果我们没有意识到这些变化,可能会导致代码的错误或不正确的结果。
欢迎订阅本专栏,将持续更新,输出优质好文