《Python 3程序开发指南(第2版•修订版)》——第1章 过程型程序设计快速入门 1.1 创建并运行Python程序

简介:

本节书摘来自异步社区《Python 3程序开发指南(第2版•修订版)》一书中的第1章,第1.1节,作者[英]Mark Summerfield,王弘博,孙传庆 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 过程型程序设计快速入门

本章提供了足以开始编写Python程序的信息。如果此时尚未安装Python,强烈建议读者先行安装Python,以便随时进行编程实践,获取实际经验,巩固所学的内容。

本章第1节展示了如何创建并执行Python程序。你可以使用自己最喜欢的普通文本编辑器来编写Python代码,但本节中讨论的IDLE程序设计环境提供的不仅是一个代码编辑器,还提供了很多附加的功能,包括一些有助于测试Python代码、调试Python程序的工具。

第2节介绍了Python的8个关键要素,通过这8个要素本身,就足以编写有用的程序。这8个要素在本书的后续章节中将全面涉及与讲解,随着本书内容的推进,这些要素将被Python的其他组成部分逐渐补充、完善。到本书结束时,读者将对Python语言有完整的了解,并充分利用该语言提供的所有功能编写自己的Python程序。

本章最后一节介绍了两个短小的程序,这两个小程序利用了第2节中介绍的Python特性的一部分,以便读者可以及时尝试Python程序设计。

1.1 创建并运行Python程序

要编写Python代码,可以使用任意能加载与保存文本(使用ASCII或UTF-8 Unicode字符编码)的普通文本编辑器。默认情况下,Python文件使用UTF-8字符编码,UTF-8是ASCII的超集,可以完全表达每种语言中的所有字符。通常,Python文件的扩展名为.py,不过在一些UNIX类系统上(比如Linux与Mac OS X),有些Python应用程序没有扩展名,Python GUI(图形用户界面)程序的扩展名则为.pyw(特别是在Windows与Mac OS X上)。在本书中,我们总是使用.py作为Python控制台程序与Python模块的扩展名,使用.pyw作为GUI程序的扩展名。本书中提供的所有实例可以不需修改地在安装Python 3的所有平台上运行。

为确认系统已经正确安装Python,也为了展示经典的第1个程序,在普通文本编辑器(Windows记事本即可,后面我们会使用更好的编辑器)中创建一个名为hello.py的程序,其中包含如下一些内容:

#!/usr/bin/env python3
print("Hello", "World!")

第1行为注释。在Python中,注释以#开始,作用范围为该行(后面我们将解释更隐秘的一些注释信息)第2行为空行,Python会忽视空行,但空行通常有助于将大块代码分割,以便于阅读。第3行为Python代码,其中调用了print()函数,该函数带2个参数,每个参数的类型都是str(字符串,即一个字符序列)。

.py文件中的每个语句都是顺序执行的,从第1条语句开始,逐行执行。这与其他一些语言是不同的,比如,C++与Java一般是从某个特定函数或方法(带有函数或方法名)开始执行。当然,下一节讨论Python控制结构时我们将看到,Python程序的控制流也是可以改变的。

这里,我们假定Windows用户将其Python代码保存在C:py3eg目录下,UNIX(包括UNIX、Linux与Mac OS X)用户将其Python代码保存在$HOME/py3eg目录下。输入上面的代码后,将其保存在py3eg目录,退出文本编辑器。

保存了程序之后,就可以运行该程序了。Python程序是由Python解释器执行的,通常在控制台窗口内进行。在Windows系统上,控制台窗口称为“控制台”、“DOS提示符”或“MS-DOS提示符”,或其他类似的称谓,通常可以通过“开始”、“所有程序”、“附件”这一顺序打开。在Mac OS X上,控制台是由Terminal.app程序(默认情况下在应用程序/工具这一目录下)提供的,通过Finder可以进行访问。在其他UNIX系统上,可以使用xterm或窗口环境提供的控制台,比如konsole或gnome- terminal。

启动一个控制台,在Windows系统上,输入如下命令(前提是假定Python安装在默认位置)——控制台的输出以粗体展示,输入的命令以细体展示。

C:\>cd c:\py3eg
C:\py3eg\>C:\Python30\python.exe hello.py

由于cd(切换目录)命令是采用绝对路径的,因此从哪个目录启动并不会影响程序执行。

UNIX用户需要输入如下命令(假定Python 3在PATH下):1

$ cd $HOME/py3eg
$ python3 hello.py

上面两种情况下,输出应该是相同的:

Hello World!

需要注意的是,除非特别声明,Python在Mac OS X上的行为与在其他UNIX系统上是相同的。实际上,提及“UNIX”时,通常意味着Linux、BSD、Mac OS X以及大多数其他UNIX系统与UNIX类系统。

虽然上面的程序只有一行可执行语句,但是通过运行该程序,我们仍然可以推断出关于print()函数的一些信息。首先,print()函数是Python语言内置的一部分——我们不需要从某个库文件中对其进行“import”或“include”,就可以直接引用该函数。此外,该函数使用一个空格分隔其打印项,在最后一个打印项打印完成后,打印一个新行。后面我们将看到,这些默认的行为是可以改变的。另一个值得注意的情况是,print()可以按我们的需要赋予其很多或很少的参数。

要输入这样复杂的命令行才能引用我们的Python程序,很快就会让人乏味,幸运的是,无论在Windows还是UNIX系统上,都有更便利的方法。假定我们在py3eg目录下,在Windows系统上,只需要输入:

C:\py3eg\>hello.py

在控制台中输入扩展名为.py的文件名时,Windows会使用其注册表中的文件关联自动调用Python解释器。

遗憾的是,并不是总可以使用这种便利,因为有些Windows版本存在bug,有时会影响文件关联调用程序的执行。这并不是Python特有的问题,其他一些解释器,甚至.bat文件也会受到这一bug的影响,如果出现这一问题,可直接调用Python,而不是依赖于文件关联。

如果在Windows上的输出为:

('Hello', 'World!')

那么说明系统上存在Python 2,并且调用的是Python 2,而非Python 3。对于这种情况,一种解决方法是将.py文件的文件关联从Python 2改为Python 3,另一种方法(不是很方便,但很安全)是将Python 3解释器设置在路径中(假定Python 3安装在默认位置),并且每次显式地执行:

C:\py3eg\>path=c:\python31;%path%
C:\py3eg\>python hello.py

或许更方便的方法是创建一个py3.bat文件,其中只包含一行代码:path=c:python 30;%path%,将该文件保存在C:Windows目录下。之后,在需要启动控制台运行Python 3程序时,都先执行py3.bat。或者也可以让py3.bat自动执行,为此,需要修改控制台属性(在“开始”菜单中找到控制台,之后鼠标右击,会弹出其属性对话框),在“快捷方式”选项卡中的“目标”处,附加文本“/u /k c:windowspy3.bat”(注意“/u”、“/k”选项前、后以及之间的空格,并确认这些内容添加在“cmd.exe”之后)。

在UNIX上,必须首先给该程序赋予可执行权限,之后才能运行该程序:

$ chmod +x hello.py
$ ./hello.py

当然,只需要运行一次chmod命令,之后就可以简单地通过./hello.py来运行该程序。

在UNIX上,当某程序在控制台中被引用时,该文件的头两个字节先被读入2。如果这两个字节是ASCII字符#!,shell就会认为该文件将要由解释器执行,并且该文件的首行指定了要使用哪个解释器。该行称为shebang(shell执行)行,如果存在,就必须为可执行文件的首行。

shebang行通常呈现为如下两种形式之一:

#!/usr/bin/python3

#!/usr/bin/env python3

如果是第一种形式,就会使用指定的解释器。这种形式对将由Web服务器运行的Python程序是必要的,尽管指定的路径可能与这里给出的不同。如果是第二种形式,就会使用在shell当前环境中发现的第一个python3解释器。第二种形式具有更强的适应性,因为这种情况考虑了Python 3解释器位于/usr/bin之外(比如,安装在/usr/local/bin或$HOME目录之下)的可能性。在Windows系统中,shebang行并非是必需的(但没有坏处)。在本书中,所有实例都带有第二种形式的shebang行,但是没有明确给出。

需要注意的是,对UNIX系统,我们假定在PATH路径下,Python 3的可执行程序名(或到该名的软链接)是python3。如果不是这种情况,就需要改变实例中的shebang行,以便使用正确的程序名(如果使用的是第一种形式,就需要正确的名称与路径),或在PATH环境变量中的适当位置创建从Python 3可执行程序到python3的软链接。

很多功能强大的普通文本编辑器(比如Vim或Emacs)都带有对编辑Python程序的内置支持。典型情况下,这种支持包括彩色的语法高亮显示,以及对相关代码行的正确缩排与非缩排。另一种方法是使用IDLE Python程序设计环境。在Windows系统与Mac OS X系统上,IDLE是默认安装的;在UNIX系统上,正如简介中所描述的,IDLE是以一个单独的软件包形式提供的。

如图1-1中的快照所示,IDLE有一个相当“复古”的外观,使我们回退到在UNIX与Windows 95上使用Motif的时代。这是因为IDLE使用了基于Tk的Tkinter GUI库(第15章对其进行介绍),而没有使用功能更强大的GUI库,比如PyGtk、PyQt或wxPython。之所以使用Tkinter,是历史原因、自由许可协议条件以及Tkinter比其他GUI库更小等多种因素共同造成的。另一方面,作为Python标准配置组成部分的IDLE非常简单,容易学习和使用。

IDLE提供了3个关键功能:输入Python表达式与代码,并在Python Shell中直接查看结果;代码编辑器,提供了Python特定的彩色语法高亮显示功能与对代码缩排的支持;调试器,可用于单步跟进代码,识别并纠正其中存在的bug。在对简单算法、代码段以及正则表达式进行实验时,Python Shell尤其有用,当然也可以用作功能非常强大、灵活的计算器。


screenshot

还有其他几种Python开发环境也可以使用,但我们建议使用IDLE,或至少最初使用IDLE。另一种方法是在普通的文本编辑器中创建程序,并调用print()进行调试。

调用Python解释器而不指定Python程序也是可以的。如果这样做,就会以交互模式启动解释器,在这种模式下,也可以输入Python语句并查看结果,就像使用IDLE的 Python Shell窗口一样,并且提示符也同样是>>>。但是,IDLE更易于使用,因此,建议使用IDLE对代码段进行试验。书中所展示的那些简短的交互式实例都是假定读者在交互式Python解释器或IDLE的Python Shell中输入的。

现在,我们已经学习了如何创建并运行Python程序,但显然我们所知甚少,仅仅学习了只使用一个函数的程序。通过下一节的学习,我们将大幅增加Python知识,并有能力创建虽然短小但是很有用的Python程序(这是本章最后一节将要做的事情)。

相关文章
|
21天前
|
存储 数据库连接 API
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
64 15
|
21天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
21天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
23天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
1月前
|
机器学习/深度学习 算法 编译器
Python程序到计算图一键转化,详解清华开源深度学习编译器MagPy
【10月更文挑战第26天】MagPy是一款由清华大学研发的开源深度学习编译器,可将Python程序一键转化为计算图,简化模型构建和优化过程。它支持多种深度学习框架,具备自动化、灵活性、优化性能好和易于扩展等特点,适用于模型构建、迁移、部署及教学研究。尽管MagPy具有诸多优势,但在算子支持、优化策略等方面仍面临挑战。
66 3
|
1月前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
40 3
|
28天前
|
存储 机器学习/深度学习 搜索推荐
Python编程入门:从零开始构建你的第一个程序
【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!
|
15天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
21天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
8天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。