使用Python的timeit模块可以快速分析代码的运行时间,这比拍脑袋假设某些代码运行更快要好得多。

Python有多种字符串插值方法。最早的方法是使用%s转换格式符标记字符串中子串的位置。Python 3.6引入的现代方法是使用f-string。f-string在字符串前加上字母f前缀,并使用大括号标记在字符串中放置子串(或表达式)的位置。

对象是一条数据的呈现,比如数字、文本,或者更复杂的数据结构,比如列表或字典。所有对象都可以存储在变量中,作为参数传递给函数调用并作为函数调用的返回内容。对象创建时会带有一个身份,它是一个唯一的整数,可以通过调用id()函数查看。

模块是可以被其他Python程序导入,将代码提供给导入者使用的程序。Python自带的模块被统称为Python标准库,你也可以创建自己的模块。如果一个程序被保存为spam.py,那么其他程序可以运行import spam来访问spam.py程序的函数、类和最上层的变量。

包是模块的集合,通过在文件夹中放置一个名为__init__.py的文件就可以形成一个包。这个文件夹的名称就是包的名称。包可以包含多个模块(也就是.py文件)或其他包(包含__init__.py文件的其他文件夹)。

大体上看,所有的编程错误都可以被分为3类:语法错误、运行时错误和语义错误——

(1)语法错误

语法是某种编程语言中有效指令的规则集。缺少小括号、用句点错误地代替了逗号或者拼写错误都是语法错误,程序会在运行时即刻抛出SyntaxError。

语法错误也被称为解析错误,当Python指令不能将源代码的文本解析成有效的指令时,就会发生语法错误。拿人类语言打比方的话,语法错误相当于语法不正确或者将一连串没有意义的词组拼凑成句子。存在语法错误时,计算机无法明确要做什么,所以程序根本不会运行。

(2)运行时错误

运行时错误是指运行中的程序不能执行某些任务,比如试图打开一个不存在的文件或者将一个数字除以0。拿人类语言打比方的话,运行时错误相当于给出一个不可能的指令。运行时错误如果没有被处理,程序就会崩溃并显示回溯信息。可以使用try-except语句捕获运行时错误并进行错误处理。

(3)语义错误(也称为逻辑错误)

这是一种更为微妙的错误。语义错误并不会显示错误信息或者导致崩溃,但计算机执行指令的方式会跟程序员预想的不同。拿人类语言打比方的话,语义错误相当于告诉计算机:“从商店买一盒牛奶,如果有鸡蛋,买一打。”结果是计算机会买13盒牛奶。