用Python开始傻瓜编程-C3

与Python交互

最终,您创建的任何应用程序都与计算机及其包含的数据进行交互。重点是数据,因为没有数据,没有充分的理由拥有应用程序。您使用的任何应用程序(甚至像Solitaire这样简单的应用程序)都会以某种方式处理数据。事实上,缩写CRUD总结了大多数应用程序所做的事情:

»创建

»阅读

»更新

»删除

如果您还记得CRUD,您将能够总结大多数应用程序对您的计算机所包含的数据所做的事情(并且某些应用程序确实相当眉头)。但是,在应用程序访问计算机之前,您必须与编程语言进行交互,该语言创建要以计算机理解的语言执行的任务列表。这就是本章的目的。您开始与Python交互。 Python会获取您要对计算机数据执行的步骤列表,并将这些步骤更改为计算机可以理解的位。

打开命令行

Python提供了许多与底层语言交互的方法。例如,您在第2章中使用了Integrated DeveLopment Environment(IDLE)。(在第4章中,您将开始了解如何使用功能齐全的集成开发环境,IDE,名为Anaconda。)IDLE使得开发成熟的应用程序变得简单。但是,有时您只想尝试或运行现有应用程序。通常,使用命令行版本的Python在这些情况下效果更好,因为它通过命令行开关提供了对Python环境的更好控制,使用更少的资源,并依赖于简约的界面,因此您可以专注于尝试代码而不是玩GUI。

启动Python

根据您的平台,您可能有多种方法来启动命令行。以下是常用的方法:

»选择Python36文件夹中的Python(命令行)选项。此选项启动使用默认设置的命令行会话。

»打开命令提示符或终端,键入Python,然后按Enter键。如果希望具有更大的灵活性,使用命令行开关配置Python环境,请使用此选项。

了解自述文件的重要性

许多应用程序都包含自述文件。 README文件通常会提供更新的信息,这些信息在应用程序进入生产状态之前未进入文档。不幸的是,大多数人忽略了README文件,有些人甚至不知道它存在。因此,那些应该对他们闪亮的新产品有所了解的人永远都不会知道。 Python在\ Python36目录中有一个NEWS.txt文件。当您打开此文件时,您会发现各种非常有趣的信息,其中大部分信息都集中在您真正需要了解的Python升级上。打开并阅读README文件(名为NEWS.txt,因为人们显然忽略了其他文件)将帮助您成为Python天才。人们会惊讶于你真的知道Python的一些有趣的东西,并会问你各种各样的问题(顺从你的智慧)。当然,你总是可以坐在那里,认为自述文件太费力阅读。

»在Windows中找到Python文件夹,例如C:\ Python36,然后直接打开Python.exe文件。此选项还会打开一个使用默认设置的命令行会话,但您可以执行以下操作:使用增加的权限打开它(对于需要访问安全资源的应用程序)或修改可执行文件属性(添加命令行开关) 。

无论您如何在命令行启动Python,最终都会得到类似于图3-1所示的提示。 (如果您依赖Windows以外的平台,您的屏幕可能与图3-1所示的屏幕略有不同,您使用的是IDLE而不是Python的命令行版本,您的系统配置与我的不同,或者你有不同版本的Python。)这个提示告诉你Python版本,主机操作系统,以及如何获取其他信息。

3-1.png

使用命令行

本节一开始看起来有点复杂,使用本书时通常不需要这些信息。但是,它仍然是很好的信息,你最终还是需要它。现在,您可以浏览信息以便了解可用的信息,然后在您确实需要信息时再回过头来查看信息。

要在命令提示符下启动Python,请键入Python并按Enter键。但是,这不是你能做的全部。您还可以提供一些其他信息来更改Python的工作方式:

»Options:选项或命令行开关,以减号开头,后跟一个或多个字母。例如,如果要获取有关Python的帮助,请键入Python -h并按Enter键。您可以在命令行中看到有关如何使用Python的其他信息。这些选项将在本节后面介绍。

»Filename:提供文件名作为输入告诉Python加载该文件并运行它。您可以将提供包含示例文件的可下载代码的名称作为输入,运行任何示例应用程序。例如,假设您有一个名为SayHello.py的示例。要运行此示例,请键入Python SayHello.py并按Enter键。

»Arguments:应用程序可以接受其他信息作为输入来控制其运行方式。此附加信息称为参数。现在不要过于担心参数 - 它们会出现在本书的后面。

大多数选项现在都没有意义。它们在这里,以便您可以在以后需要时找到它们(这是将它们包含在书中的最合理的地方)。阅读它们将有助于您了解可用的内容,但您也可以跳过此材料,直到您以后需要它为止。

Python使用区分大小写的选项。例如,-s是与-S完全不同的选项。 Python选项是

»-b:当您的应用程序使用某些Python功能时,向输出添加警告:str(bytes_instance),str(bytearray_instance),以及比较bytes或bytearray和str()。

»-bb:当您的应用程序使用某些Python功能时,向输出添加错误:str(bytes_instance),str(bytearray_instance),以及比较bytes或bytearray和str()。

»-B:执行模块导入时不要写.py或.pyco文件。

»-c cmd:使用cmd提供的信息启动程序。此选项还告诉Python停止将其余信息作为选项处理(它被视为命令的一部分)。

»-d:启动调试器(用于查找应用程序中的错误)。

»-E:忽略用于配置Python以供使用的所有Python环境变量,例如PYTHONPATH。

»-h:在屏幕上显示有关选项和基本环境变量的帮助.Python在执行此任务后始终退出而不执行任何其他操作,以便您可以查看帮助信息。

»-i:强制Python允许您在运行脚本后以交互方式检查代码。即使标准输入设备(标准输入设备)看起来不是终端,它也会强制提示。

»-m mod:将mod指定的库模块作为脚本运行。此选项还告诉Python停止将其余信息作为选项处理(其余信息将作为命令的一部分处理)。

»-O:稍微优化生成的字节码(使其运行更快)。

»-OO:通过删除文档字符串执行其他优化。

»-q:告诉Python不要在交互式启动时打印版本和版权消息。

»-s:强制Python不要将用户站点目录添加到sys.path(一个告诉Python在何处查找模块的变量)。

»-S:初始化时不要运行'import site'。使用此选项意味着Python不会查找可能包含所需模块的路径。

»-u:允许stdout(标准输出)和stderr(标准错误)设备的无缓冲二进制输入。 stdin设备始终是缓冲的。

»-v:将Python置于详细模式,以便您可以查看所有import语句。多次使用此选项会增加详细程度。

»-V:显示Python版本号并退出。

»--version:显示Python版本号并退出。

»-W arg:修改警告级别,以便Python显示更多或更少的警告。有效的arg值为

•action

•message

•category

•module

•lineno

»-x:跳过源代码文件的第一行,允许使用非Unix形式的#!cmd。

»-X opt:设置特定于实现的选项。 (您的Python版本的文档讨论了这些选项,如果有的话。)

使用Python环境变量作为你的优势

环境变量是特殊设置,它们是操作系统的命令行或终端环境的一部分。它们用于以一致的方式配置Python。环境变量执行许多与启动Python时提供的选项相同的任务,但是您可以使环境变量永久化,这样您每次启动时都可以以相同的方式配置Python,而无需手动提供选项。

与选项一样,大多数这些环境变量现在都没有任何意义。您可以通读它们以查看可用的内容。您可以在本书后面找到一些环境变量。您可以跳过本节的其余部分,稍后在需要时再回来查看。

大多数操作系统通过在特定会话期间配置环境变量或通过将它们配置为操作系统设置的一部分来提供临时设置环境变量的方法。确切地说,执行此任务的方式取决于操作系统。例如,在使用Windows时,您可以使用Set命令(请参阅我的博客文章:http://blog.john muellerbooks.com/2014/02/24/using-the-set-command-to-your-advantage /有关详细信息)或依赖于特殊的Windows配置功能(请参阅我在http://blog.johnmuellerbooks.com/2014/02/17/adding-a-location-tothe-windows-path/上的帖子,以设置Path环境变量作为例子)。

当您需要定期以相同的方式配置Python时,使用环境变量是有意义的。以下列表描述了Python环境变量:

»PYTHONCASEOK = x:强制Python在解析import语句时忽略大小写。这是一个仅限Windows的环境变量。

»PYTHONDEBUG = x:执行与-d选项相同的任务。

»PYTHONDONTWRITEBYTECODE = x:执行与-B选项相同的任务。

»PYTHONFAULTHANDLER = x:强制Python在致命错误上转储Python跟踪(导致错误的调用列表)。

»PYTHONHASHSEED = arg:确定用于从各种数据生成哈希值的种子值。当此变量设置为random时,Python使用随机值来为str,bytes和datetime对象的哈希值设定种子。有效的整数范围是0到4294967295.使用特定的种子值来获取可预测的哈希值以用于测试目的。

»PYTHONHOME = arg:定义Python用于查找模块的默认搜索路径。

»PYTHONINSPECT = x:执行与-i选项相同的任务。

»PYTHONIOENCODING = arg:指定用于stdin,stdout和stderr设备的编码[:errors](例如utf-8)。

»PYTHONNOUSERSITE:执行与-s选项相同的任务。

»PYTHONOPTIMIZE = x:执行与-O选项相同的任务。

»PYTHONPATH = arg:提供以分号(;)分隔的目录列表以搜索模块。该值存储在Python的sys.path变量中。

»PYTHONSTARTUP = arg:定义Python启动时要执行的文件的名称。此环境变量没有默认值。

»PYTHONUNBUFFERED = x:执行与-u选项相同的任务。

»PYTHONVERBOSE = x:执行与-v选项相同的任务。

»PYTHONWARNINGS = arg:执行与-W选项相同的任务。

键入命令

启动命令行版本的Python后,您可以开始键入命令。使用命令可以执行任务,测试编写应用程序的想法,并发现有关Python的更多信息。使用命令行可以获得Python实际工作方式的操作经验 - 交互式IDE(如IDLE)可以隐藏详细信息。以下部分将帮助您开始使用命令行。

告诉计算机做什么

Python,就像现有的其他编程语言一样,依赖于命令。命令只是程序中的一个步骤。在第1章中,您看到“从冰箱中取出面包和黄油”是制作烤面包的过程中的一个步骤。使用Python时,一个命令(如print())就是同一个东西:过程中的一个步骤。

要告诉计算机要做什么,您可以发出一个或多个Python理解的命令。 Python将这些命令转换为计算机可以理解的指令,然后您可以看到结果。诸如print()之类的命令可以在屏幕上显示结果,以便您获得即时结果。但是,Python支持各种命令,其中许多命令不会在屏幕上显示任何结果,但仍会执行一些重要操作。

随着本书的进展,您可以使用命令执行各种任务。这些任务中的每一项都将帮助您实现目标,就像程序中的步骤一样。当看起来所有Python命令变得太复杂时,只需记住将它们视为过程中的步骤。即使是人工程序有时也会变得复杂,但如果你一步一步地完成它们,你就会开始看到它们是如何工作的。 Python命令的方式相同。不要被他们淹没;相反,一次看一个,并专注于你的程序中的那一步。

告诉计算机你已经完成

在某些时候,你创建的程序结束了。当你做吐司时,程序会在你涂抹吐司后结束。计算机程序的工作方式完全相同。他们有一个起点和终点。键入命令时,特定步骤的结束点是Enter键。按Enter键告诉计算机您已完成键入命令。随着本书的进展,您会发现Python提供了许多方法来表示步骤,步骤组甚至整个应用程序是否完整。无论任务如何完成,计算机程序总是有一个独特的起点和终点。

查看结果

您现在知道命令是过程中的一个步骤,并且每个命令都有一个不同的起点和终点。此外,命令组和整个应用程序也有不同的起点和终点。那么,看看它是如何工作的。以下过程可帮助您查看使用命令的结果:

1.启动Python命令行版本的副本。您将看到一个命令提示符,您可以在其中键入命令,如图3-1所示。

2.在命令行键入print(“这是一行文本。”)。注意没有任何反应。是的,您输入了一个命令,但您没有表示该命令已完成。

3.按Enter键。命令完成,您将看到如图3-2所示的结果。

3-2.png


本练习向您展示了Python中的工作原理。您键入的每个命令都会执行某项任务,但只有在您告诉Python该命令以某种方式完成之后。 print()命令在屏幕上显示数据。在这种情况下,您提供了要显示的文本。请注意,图3-2中显示的输出紧跟在命令之后,因为这是一个交互式环境 - 您可以在Python执行它之后立即查看任何给定命令的结果。稍后,当您开始创建应用程序时,您会注意到有时候结果不会立即显示,因为应用程序环境会延迟它。即便如此,在应用程序告诉Python命令完成后,该命令立即由Python执行。

PYTHON的编码风格

大多数编程语言都致力于只使用一种编码风格,这降低了程序员的灵活性。但是,Python是不同的。您可以使用多种编码样式来实现Python的不同效果。四种常用的Python编码样式是

•函数式:每个语句都是一种数学方程式。这种风格非常适合用于并行处理活动。

•命令式:计算是在程序状态发生变化时发生的。此样式最常用于操作数据结构。

•面向对象:这是通常与其他语言一起使用的样式,通过使用对象模拟现实世界来简化编码环境。 Python并没有完全实现这种编码风格,因为它不支持数据隐藏等功能,但你仍然可以在很大程度上使用这种方法。你会看到本书后面使用的这种风格。

•程序式:到目前为止您编写的所有代码(以及本书中的大部分初始代码)都是程序性的,这意味着任务一步一步地完成。此样式最常用于迭代,排序,选择和模块化。这是您可以使用的最简单的编码形式。

虽然本书没有涵盖所有这些编码风格(以及Python支持的其他编程风格),但清楚的知道您不会局限于特定的编码风格。因为Python支持多种编码样式,并且您可以在单个应用程序中混合和匹配这些样式,所以您可以以最适合特定需求的方式使用Python。您可以在阅读有关编码样式的更多信息 https://blog.newrelic.com/2015/04/01/python-programming-styles/上

使用帮助

Python是一种计算机语言,而不是人类语言。因此,您最初不会流利地说出来。如果你考虑一下,那么你就理解不会流利地说Python(就像大多数人类语言一样,即使你说得流利也不会知道每一个命令)。循序渐进的学习Python与学习说别人的语言是一回事。如果您通常会说英语并尝试用德语说些什么,您会发现必须有某种指导来帮助您。否则,你说的任何话都是胡言乱语,人们会很奇怪地看着你。即使你设法说出有意义的东西,它也可能不是你想要的。当你真正想吃的是牛排时,你可能会去餐厅订购热的轮盘吃晚餐。

同样,当您尝试讲Python时,您需要一本指南来帮助您。幸运的是,Python非常适应并提供即时帮助,以防止您订购您真正不想要的东西。 Python内部提供的帮助有两个层次:

»帮助模式,您可以在其中浏览可用的命令

»直接帮助,您在其中询问特定命令

没有正确的方法来使用帮助 - 只是在特定时间最适合你的方法。以下部分介绍了如何获取帮助。

进入帮助模式

首次启动Python时,您会看到类似于前面图3-1中所示的显示。请注意,Python在开始时为您提供了四个命令(这实际上是您的第一个帮助信息):

»help

»copyright

»credits

»license

所有四个命令都为您提供有关Python的帮助。例如,copyright()命令告诉您谁有权复制,许可或以其他方式分发Python。 credits()命令告诉你谁将Python放在一起。 license()命令描述了您与版权所有者之间的使用协议。但是,您最想知道的命令就是help()。

要进入帮助模式,请键入help()并按Enter键。请注意,即使命令没有出现在帮助文本中,也必须在命令后包括括号。每个Python命令都有与之关联的括号。输入此命令后,Python进入帮助模式,您将看到类似于图3-3所示的显示。

3-3.png

您可以通过Python窗口中显示的help>提示始终告诉您处于帮助模式。只要您看到help>提示符,就会知道您处于帮助模式。

寻求帮助

要获得帮助,您需要知道要问什么问题。当您进入帮助模式时看到的初始帮助消息(请参阅图3-3)提供了一些有关您可以提出的问题的有用提示。如果你想探索Python,那么四个基本主题是

»模块

»关键词

»符号

»主题

前两个主题目前不会告诉你太多。在第10章之前,您将不需要模块主题。关键字主题将在第4章开始证明有用。但是,符号和主题关键字已经很有用,因为它们可以帮助您了解Python冒险的起点。键入符号并按Enter键时,您会看到Python中使用的符号列表。要查看可用的主题,请键入主题,然后按Enter键。您会看到类似于图3-4中所示的主题列表。

3-4.png

第7章开始讨论符号时您将在Python中探索运算符的使用。当您看到自己喜欢的主题(例如FUNCTIONS)时,只需键入该主题并按Enter键即可。要查看其工作原理,请键入FUNCTIONS并按Enter键(必须以大写形式键入单词 - 不要担心,Python不会认为您在喊叫)。您会看到类似于图3-5中所示的帮助信息。

3-5.png

在学习本书中的示例时,您可以使用看起来很有趣的命令,并且可能需要有关它们的更多信息。例如,在本章的“查看结果”部分中,您使用print()命令。要查看有关print()命令的更多信息,请键入print并按Enter键(请注意,这次不包括括号,因为您正在请求有关print()的帮助,而不是实际使用该命令)。图3-6显示了print()命令的典型帮助信息。

3-6.png

不幸的是,阅读帮助信息可能没有多大帮助,因为您需要了解有关Python的更多信息。但是,您可以要求提供更多信息。例如,您可能想知道sys.stdout的含义 - 并且帮助主题当然不会告诉您任何有关它的信息。键入sys.stdout并按Enter键。您会看到如图3-7所示的帮助信息。

3-7.png

您可能仍然没有找到有用的信息,但至少您知道更多。在这种情况下,帮助说了很多话,所以它不能全部适合一个屏幕。请注意屏幕底部的以下条目:

- more -

要查看其他信息,请按空格键。出现下一页帮助。当您阅读每页帮助的底部时,可以按空格键查看下一页。页面不会消失 - 您可以向上滚动以查看以前的材料。

离开帮助模式

在某些时候,您需要离开帮助模式才能执行有用的工作。您所要做的就是按Enter键而不键入任何内容。当您按Enter键时,您会看到有关离开帮助的消息,然后提示符将更改为标准Python提示符,如图3-8所示。

3-8.png

直接获取帮助

除非您想要浏览,这总是一个好主意,或者除非您实际上不知道您需要查找什么,否则无需进入帮助模式。如果您对所需内容有所了解,那么您需要做的就是直接寻求帮助(这对Python来说非常好)。因此,您只需键入单词help,然后输入左括号和单引号,无论您要查找什么,另一个单引号和右括号,而不是摆弄帮助模式。例如,如果要了解有关print()命令的更多信息,请键入help('print')并按Enter键。图3-9显示了以这种方式访问帮助时的典型输出。

3-9.png

如果您可以在Python提示符下获得相同的结果,您可能想知道为什么Python会有一个帮助模式。答案是很方便。在帮助模式下浏览更容易。此外,即使您在提示符处没有进行大量额外输入,也可以在帮助模式下执行较少的输入操作。帮助模式还提供了其他帮助,例如列出可以键入的命令,如图3-3所示。因此,当您计划向Python提出许多帮助问题时,您有充分的理由进入帮助模式。

无论您在哪里寻求帮助,都需要观察帮助主题的正确大写。例如,如果您需要有关函数的一般信息,则必须键入help('FUNCTIONS')而不是help('Functions')或help('functions')。当您使用错误的大小写时,Python会告诉您它不知道您的意思或者找不到帮助主题。它不会告诉你你使用了错误的大写字母。有一天,计算机会知道你打算输入什么,而不是你输入的类型,但这还没有发生。

关闭命令行

最终,你想离开Python。是的,很难相信,除了整天玩Python之外,人们还有其他事情可做。你有两种标准方法可以离开Python和一大堆非标准方法。通常,您希望使用其中一种标准方法来确保Python按预期运行,但是当您只是想要使用Python而不执行任何生产性工作时,非标准方法正好适合。两种标准方法是

»quit()

»exit()

这两种方法都将关闭Python的交互式版本。 shell(Python程序)旨在允许任一命令。

这两个命令都可以接受可选参数。例如,您可以键入quit(5)或exit(5),然后按Enter退出shell。 numeric参数设置命令提示符 ERRORLEVEL环境变量,然后您可以在命令行或作为批处理文件的一部分进行拦截。标准做法是在应用程序没有出错时简单地使用quit()或exit()。要查看这种退出工作方式,您必须

1.打开命令提示符或终端。

你看到一个提示。

2.键入Python并按Enter键以启动Python。

你看到了Python的提示。

3.键入quit(5)并按Enter键。

你再次看到提示。

4.键入echo%ERRORLEVEL%并按Enter键。

您会看到错误代码,如图3-11所示。使用Windows以外的平台时,可能需要键入echo以外的其他内容%ERRORLEVEL%。例如,使用bash脚本时,键入echo $。

3-11.png

最常见的非标准退出方法之一是只需单击命令提示符或终端的“关闭”按钮即可。使用此方法意味着您的应用程序可能没有时间执行任何所需的清理,这可能导致奇怪的行为。如果你做的不仅仅是浏览,那么使用预期的方法关闭Python总是更好。

您还可以访问许多其他命令,以便在需要时关闭命令提示符。在大多数情况下,您不需要这些特殊命令,因此如果需要,您可以跳过本节的其余部分。

当您使用quit()或exit()时,Python会执行许多任务以确保在会话结束之前一切都干净整洁。如果您怀疑会话可能无法正常结束,您可以一直依赖这两个命令之一来关闭命令提示符:

»sys.exit()

»os._exit()

这两个命令仅在紧急情况下使用。第一个,sys.exit(),提供了您在第9章中发现的特殊错误处理功能。第二个,os._exit()退出Python而不执行任何常见的清理任务。在这两种情况下,必须先导入所需的模块(sys或os),然后才能使用关联的命令。因此,要使用sys.exit()命令,您实际使用此代码:

import sys

sys.exit()

使用os._exit()时必须提供错误代码,因为此命令仅在发生极端错误时使用。如果您不提供错误代码,则对此命令的调用将失败。要使用os._exit()命令,实际使用此代码(错误代码为5):

import os

os._exit(5)

第10章详细讨论了导入模块。现在,只要知道这两个命令仅用于特殊用途,您通常不会在应用程序中使用它们。

阅读 53
上一篇:这是第一篇