Skip to main content

第一个 Python 程序

欢迎进入编程世界!

这是编程语言书籍的一个传统,第一句话永远是上面这句问候。而第一个编写的程序就是打印出“Hello World!”这句话。我们也沿用这一传统,从 Hello World 开始。

实现这一功能只需要运行以下的语句

print("Hello, World!")

使用在线编辑环境

使用在线编辑环境非常简单,不要任何额外工作。打开编辑环境的页面,输入上面那句代码,运行即可。比如: https://qizhen.xyz/python 或者 https://qizhen.xyz/brython

直接在 Python 解释器中运行

如果不使用任何 IDE,那么可以打开计算机的命令行终端,然后输入 python 并回车,系统会启动 Python 解释器。读者现在应该看到 >>> 这样的提示符,表示 Python 解释器已经准备好接受命令了。

在 >>> 提示符后,输入以下代码:

print("Hello, World!")

然后回车。

读者应该看到输出为:

Hello, World!

恭喜!你刚刚编写并运行了你的第一个 Python 程序。

使用集成开发环境(IDE)

如果使用的是前文介绍过的任何一种集成开发环境编写程序,总是需要先创建一个文件来保存程序的。把下面这行文字复制到新建的文件里:

print("Hello, World!")

然后保存从任何名为 *.py 的文件。在点击 IDE 上的运行按钮,就可以运行程序了。

运行一个 .py 文件

对于任何已经保存好的 .py 文件,我们在 IDE 中打开他们运行。也可以在命令行中端里运行它们。比如我们有一个名为“welcome.py”的文件,其内容是如下代码:

name = input("你叫什么名? ")
print(f"你好,{name}!欢迎来到 Python 的编程世界!")

打开命令行或终端,导航到 welcome.py 文件所在的目录。输入以下命令并回车:

python welcome.py

当程序提示输入名字时,输入你的名字并回车。

现在应该看到一个类似 你好,ruanqizhen!欢迎来到 Python 的编程世界! 的消息了。

Python 的语法

Python 以其简洁明了的语法而著称。我们下面简要介绍一下 Python 的语法,主要是方便已有其它编程语言经验的读者快速熟悉 Python 的特点。对于没有经验的读者,如果觉得介绍的太过笼统,也不要紧,后文还会对它们做详细解析。

和大多数主流编程语言一样,Python 由一行一行的“语句”组成。比如下面的程序:

print("Hello, World!")

在这一行语句中,“print”是一个函数的名字。如果读者没有接触过其它编程语言,可以把这里的函数想象成类似数学函数的概念,在函数名后面的括号中传入一个变量数据,函数就会产生相应的结果。在这里,输入的数据是一串字符“Hello, World!”。Python 语言中,双引号中间的内容表示字符串。“print”的运行结果是把输入的字符串打印在屏幕上。

如果运行:

print(1+2)

这时候 print 函数的输入变成了一个数值运算表达式。Python 会首先计算这个表达式的值,然后再打印出结果“3”。

如果程序有多行代码,比如:

name = input("你叫什么名? ")
print(f"你好,{name}!欢迎来到 Python 的编程世界!")

那么程序一般会按照从上到下的顺序逐句运行。在上面的示例中,input 也是一个函数,跟 print 函数相似,它也会把它的参数打印在屏幕上,区别在于,input 函数会随后读取用户使用键盘输入的内容。name 是一个变量,用于保存 input 函数返回的数据,也就是用户使用键盘输入的内容。接下来的 print 函数会把它的数据,连同变量 name 里的内容一起打印在屏幕上。

Python 的解释器

解释型编程语言

计算机编程语言与我们使用的自然语言,比如中文、英文,虽然有差别,但仍有相似之处。它们均由按照特定语法排列的文字构成。然而,计算机处理器实际上无法直接理解这些文字;它仅识别二进制的指令和数据。要运行我们编写的程序,首先需要把这些文字形式的程序转换成为处理器可识别的二进制指令和数据。我们熟知的每种编程语言都需经历这个转换过程。根据执行翻译的过程的不同,编程语言大致分为两类:编译型和解释型。

在编译型语言中,源代码需要完整书写完成后,才整体翻译成二进制机器语言再执行。这个翻译过程被称为“编译”。像 C、C++ 这样的编译型语言拥有编译器,负责将我们写的程序编译成 EXE 文件,然后才能运行。

而解释型语言则无需预先进行编译。它们边读取代码边将其翻译成二进制机器语言,边运行。这一过程称为“解释”,其中每读取一行代码,就解释并执行这一行。Python 和 JavaScript 是典型的解释型语言,使用它们编写的代码有时也被称为脚本。

这两类编程语言各有优劣。编译型语言的优势在于运行速度快,因为程序已经预先编译好,运行时直接执行编译后的二进制机器语言。此外,将程序代码作为一个整体编译还可以进行许多优化,进一步提升效率。其缺点是,任何一处代码更改都需要重新编译整个程序。

相反,解释型语言因为程序运行时先要解释才能执行,运行速度慢。但它却更加灵活。部分代码的修改不会影响其它部分的代码的执行,这一点有时候非常有用,笔者经常在编写程序的时候,一边写一边执行,以确保程序正确。若某句出错,可以直接重写并单独运行该句,而无需重新执行整个程序,大大提高了开发效率。

二十年前,是编译型语言一统天下的时代。解释型语言不受欢迎,因为那时候它们确实太慢了。但如今情况已经变了,解释型语言经过诸多改进,在速度上的缺陷已经不那么明显了。目前,最消耗计算机算力,最考验运行效率的任务,恐怕非训练人工神经网络模型莫属了。然而,却正是 Python 这个解释型语言在此领域表现的最为出色。其原因在于,运行 Python 程序时,并非所有代码都以解释方式执行。实际上,只有主文件中的代码是解释执行的。最耗时的逻辑通常在模块中实现,例如 AI 模型训练逻辑常在诸如 PyTorch 这类模块中实现。这个模块本身已经被编译好了,运行时会直接执行二进制机器语言。而主程序中的代码通常只负责数据传递和结果显示,这些操作本就非常快。因此,无论是用 C 语言还是 Python 训练 AI 模型,在速度上几乎没有差别。

不仅 Python 自带或第三方模块如此,我们自己编写的模块也会被 Python 预先翻译并保存在 *.pyc 文件中,使得再次运行时无需再解释,直接使用 pyc 文件即可,这无疑极大地提升了程序运行速度。

Python 解释器的种类

Python 的解释器不止一种。我们平时讨论最多的解释器叫做 CPython。它是 Python 官方发行的版本,用C语言开发的,所以叫 CPython。除了这个解释器,我们上文也提到过,有把 Python 程序翻译成 JavaScript 程序的解释器,比如 pyscript;有翻译成 Java 字节码的解释器 Jython;有翻译成 .NET 字节码的 IronPython;还有对 Python 程序进行编译的 PyPy 等等。这些解释器或者编译器产生的运行结果可能会与官方的 CPython 略有不同,本书在介绍程序运行效果的时候,会以 CPython 为准。

Python 的版本

Python 一直在改进中,每隔几个月就会有一个较大的版本更新。作为学习使用,建议尽量使用 Python 的最新版本。如果想查看你的 Python 版本,在计算机的命令行终端可以使用如下命令:

python --version

然后会看到类似 Python 3.11.2 的输出,它表示了 Python 的版本是 3.11.2

如果是在 Python 的编辑环境中,可以运行如下 Python 代码查看其版本:

import sys
print(sys.version_info)
print(sys.version)

这会显示一些更详细的版本信息,比如:

sys.version_info(major=3, minor=11, micro=2, releaselevel='final', serial=0)
3.11.2 (main, May 3 2023, 04:00:05) [Clang 17.0.0]

除了版本号,还会显示版本发布的日期,编译平台等信息。