骑麦兜看落日

[Code]Python学习手册_第一部分_使用入门

字数统计: 8.8k阅读时长: 30 min
2018/07/21 Share

第一章 问答环节

本章探索了人们选择Python完成编程任务的原因,也看到了它实现起来的效果以及当前一些具有代表性的使用Python的鲜活例子


人们为何使用python

  • 软件质量
  • 提高开发者的效率
  • 程序的可移植性
  • 标准库的支持
  • 组件集成
  • 享受乐趣

软件质量

秉承了独特的简洁和高可读性的语法,以及一种高度一致的编程模式

采用模块化设计、OOP在内的一些工具来提升程序的可重用性

开发效率

简洁的语法、动态类型、无需编译、内置工具包

Python是”脚本语言”吗

Python可定义为面向对象的脚本语言

  • Shell工具

    面向系统的脚本语言代码工具

  • 控制语言

    控制或重定向其他应用程序组件的”粘接”层

  • 使用快捷

    应用于快速编程任务的一种简单语言


好吧,Python的缺点是什么呢

与C和C++这类编译语言相比,Python的执行速度还不够快

目前Python的标准实现方式是将源代码的语句编译(或者说是转换)为字节码的形式,之后再将字节码解释出来.


如今谁在使用python

除了个人用户使用之外,Python也被一些公司应用于商业产品的开发上.


使用python可以做些什么

系统编程

Python对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也称为Shell工具)的理想工具

用户图形接口

Python内置了TKinter的标准面向对象接口Tk GUI API,使Python程序可以生成可移植的本地观感的GUI

诸如PythonCard和Dabo等一些高级工具包是构建在wxPython和tkinter的基础API之上的

Internet脚本

Python提供了标准Internet模块,它使得Python程序能够广泛地在多种网络任务中发挥作用,无论是在服务器还是客户端都是如此

从网络上还可以获得很多实用Python进行Internet编程的第三方工具

许多针对Python的Web开发工具包,例如,Django、TurboGears、web2py、PylonsZope和WebWare,他们使得Python能够快速构建功能完善和高质量的网站

组件集成

Python可以通过C/C++系统进行拓展,并能够嵌套C/C++系统的特性,使其能够作为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为

为了在脚本中使用,在Python连接编译好组件时,SWIG和SIP这样的代码生成工具可以染给这部分工作自动完成,并且CPython系统允许代码混合到Python和类似C的代码中

Python的微软Windows所支持的COM,基于Java实现的Jython,基于.NET实现的IronPython和各种CORBA工具包,提供了多种不同的脚本组件

数据库编程

Python定义了一种通过Python脚本存取SQL数据库系统的可移植的数据库API,这个API对于各种底层应用的数据库系统都是统一的

Python标准的pickle模块提供了一个简单的对象持久化系统:它能够让程序轻松地将整个Python对象保存和恢复到文件和文件类的对象中

快速原型

可以在一开始利用Python做系统原型,之后再将组件移植到C或C++这样的编译语言上

数值计算和科学计算编程

通过将Python与出于速度考虑而使用编译语言编写的数值计算的常规代码进行集成,NumPy将Python编程一个缜密严谨并简单易用的数值计算工具买这个工具通常可以替代已有的代码,而这些代码都是用FORTRAN或C++等编译语言编写的

游戏、图像、人工智能、XML、机器人等

  • 可以利用pygame系统使用Python对图形和游戏进行编程
  • 使用PySerial拓展使用Python对图形和游戏进行编程
  • 用PIL、PyOpenGL、Blender、Maya和其他的一些工具进行图像处理
  • 用PyRo工具包进行机器人控制编程
  • 用xml库、xmlrpclib模块和其他一些第三方拓展进行XML解析
  • 使用神经网络仿真器和专业的系统shell进行AI编程
  • 使用NLTK包进行自然语言分析

Python如何获得支持

Python开发者使用一个源代码控制系统在线协同地工作


Python有哪些技术上的优点

面向对象

Python是一种面向对象的语言

它的类模块支持多态、操作符重载和多重继承等高级概念

免费

Python的使用和分发是完全免费的

可移植

Python的标准实现是由可移植的ANSI C编写的,可以在目前所有的主流平台上编译和运行

功能强大

  • 动态类型
  • 自动内存管理
  • 大型程序支持
  • 内置对象类型
  • 内置工具
  • 库工具
  • 第三方工具

可混合

Python程序可以以多种方式轻易地与其他语言编写的组件”粘接”在一起

简单易用

运行Python程序,只需要简单地键入Python程序并运行就可以了

Python提供了简洁的语法和强大的内置工具

简单易学


Python和其他语言比较起来怎么样

  • 比Tel强大

  • 有着比比Perl更简洁的语法和更简单的设计,这使得Python更具可读性、更易于维护,有助于减少程序bug

  • 比Java更简单、更易于使用

  • 比C++更简单、更易于使用,但通常不予C++竞争

  • 比Visual Basic更强大也更具备跨平台特性

  • 比PHP更易懂并且用途更广

  • 比Ruby更成熟、语法更具可读性

  • 具备SmallTalk和Lisp等动态类型的特性,但是对于开发者及定制系统的终端用户来说更简单,也更接近传统编程语言的语法


本章习题

  1. 人们选择Python的六个主要原因是什么

    软件质量、开发者效率、程序的可移植性、标准库的支持、组件集成和享受简便其中,质量和效率这两条是人们选择Python的主要原因

  2. 请列举如今正在使用Python的四个注明的公司和组织的名称

    Industrial Light & Magic、EVE Online、Jet Propulsion Labs、Maya和ESRI等

    做软件开发的所有组织几乎都流行使用Python,无论是长期战略产品开发还是测试或系统管理这样的短期策略任务都广泛采用了Python

  3. 处于什么样的原因会让你在应用中不使用Python呢

    Python的缺点是它的性能:它不像C和C++这类常规的编译语言运行得那么快

    另一方面,它对于绝大多数应用已经足够快了,并且典型的Python代码运行起来速度接近C,因为在Python解释器中调用链接了C代码

    如果速度要求很苛刻的话,应用的数值处理部分可以采用编译好的扩展以满足应用要求。

  4. 你可以用Python做什么

    几乎可以在计算机上的任何方面使用Python:从网站和游戏开发到机器人和航天飞机控制

  5. 在python中import this有什么意义


第二章 Python如何运行程序

本章介绍了Python的执行模块并探索了这个模块的一些变体(即时编译器以及类似的工具)


Python解释器简介

Python解释器将读取编写的一段Python程序,并按照其中的命令执行,得出结果

实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层

  • 根据使用情况的不同,Python解释器可能采取可执行程序的形式,或是作为链接到另一个程序的一系列库
  • 根据选用的Python版本的不同,解释器本身可以用C程序实现,或一些Java类实现,或者其他的形式

Python包包含了一些最小化的组件:一个解释器和支持的库

不同平台Python的安装细节

  • Windows用户可通过获取并运行自安装的可执行文件,把Python安装到自己的机器上

    双击后在所有的弹出提示框中选择”是”或”继续”即可

  • Linux和Mac OS X用户也许已经拥有了一个可用的Python预先安装在了计算机上:如今Python已成为这些平台的标准组件

  • 一些Linux用户和Mac OS X用户(和大多数UNIX用户一样)可从Python的完整源代码分发包中编译安装

  • Linux用户也可以找到RPM文件,并且Mac OS X用户可以找到各种特定于Mac的安装包

  • 其他平台有着对应其平台的不同的安装技术

    例如,Python 可以在移动电话、游戏终端和iPod上应用


程序执行

程序员的视角

一个Python程序仅是一个包含Python语句的文本文件

Python文件是以.py结尾的

Python的视角

当 Python运行脚本时,第一步是编译成所谓的”字节码”,之后将其转发到所谓的”虚拟机”中

字节码编译

当程序执行时,Python内部会先将源代码编译成所谓字节码的形式

编译是一个简单的翻译步骤

字节码是源代码底层的、与平台无关的表现形式

这些字节码可以提高执行速度

  • 如果Python进程在机器上拥有写入权限,那么它将把程序的字节码保存为一个以.pyc为拓展名的文件
  • 下一次运行程序时,如果在上次保存字节码之后没有修改过源代码的话,Python将会加载.pyc文件并跳过编译这个步骤
  • 当Python必须重编译时,它会自动检查源文件和字节码文件的时间戳:如果又保存了源代码,下次程序运行时,字节码将会自动重新创建
  • 如果Python无法在机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时简单地丢弃

Python虚拟机(PVM)

一旦程序编译成字节码(或字节码从已经存在的.pyc文件中载入),之后的字节码发送到通常称为 Python虚拟机上来执行

PVM就是迭代运行字节码指令的一个大循环,一个接一个地完成操作

性能的含义

无法像C或C++代码一样快的原因

  • 在Python的工作中通常没有”build”或”make”的步骤:代码在写好之后立即运行
  • Python字节码不是机器的二进制代码

纯Python代码的运行速度介于传统的编译语言和传统的解释语言之间

  • PVM循环仍然需解释字节码,并且字节码指令与CPU指令相比需要更多的工作
  • 仍有内部的编译步骤:Python并不需要反复地重分析和重分解每一行语句

开发的含义

编译器总是在运行时出现,并且是运行程序系统的一部分


执行模块的变体

Python实现的替代者

Python语言有三种主要实现方式(Cpython、Jython和IronPython)以及一些次要的实现方式,例如Stackless Python

CPython是标准的实现,其他的都是有特定的目标和角色的

CPython

原始的、标准的Python实现方式通常称作CPython

由可移植的ANSI C语言代码编写而成

CPython是这门语言的参照实现方式,所以和其他的替代系统相比来说,它运行速度最快、最完整而且也最健全

Jython

Jython系统是一种Python语言的替代实现方式,其目的是为了与Java编程语言集成

Jython包含了Java类,这些类编译Python源代码、形成Java字节码,并将得到的字节码映射到Java虚拟机上

Jython的目标是让Python代码能够脚本化Java应用程序,就好像CPython允许Python脚本化C和C++组件一样

IronPython

Python的第三种实现方式IronPython,其设计目的是让Python程序可以与Windows平台上的.NET框架以及与之对应的Linux上的开源的Mono编写成的应用相集成

执行优化工具

Psyco实时编译器

Psyco是一个PVM的增强工具,这个工具手机并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器代码,从而实现更快的执行速度

因为字节码的转换与程序运行同时发生,所以Psyco往往被看做是一个即时编译器(JIT)

Shedskin C++转换器

Shedskin是一个引擎系统,它尝试将Python代码变为C++代码,然后使用机器中的C++编译器将得到的C++代码编译为机器代码

冻结二进制文件

冻结二进制文件能够将程序的字节码、PVM以及任何程序所需要的Python支持文件捆绑在一起形成一个单独的文件包

主要有三种系统能够生成冻结二进制文件:py2exe(Windows下使用)、PyInstaller(和py2exe类似,它能够在Linux及Unix 上使用,并且能够生成自安装的二进制文件)以及freeze(最初始的版本)

其他执行选项

  • Stackless Python系统是标准CPython实现的一个变体,它不会在C语言调用栈上保存状态

    这使得Python更容易移植到较小的栈架构中,提供了更高效的多处理选项,并且促进了像coroutine这样的新奇的编程结构。

  • Cython系统(基于Pyrex项目所完成的工作)是一种混合的语言,它为Python代码结合了调用C函数以及使用变量、参数和类属性的C类型声明的能力

    Cython代码可以编译成使用Python/C API的C代码,随后可以再完整地编译

    尽管与标准Python并不完全兼容,Cython对于包装外部的C库以及提高Python的C扩展的编码效率都很有用

未来的可能性

  • Parrot项目的目标就是提供一种对于多种编程语言通用的字节码格式、虚拟机以及优化技术
  • 项目PyPy尝试在PVM上重新实现Python,以便使新的实现技术成为可能

本章习题

  1. 什么是Python解释器

    Python解释器是运行Python程序的程序

  2. 什么是源代码

    源代码是为程序所写的语句:它包括了文本文件(通常以,py为后缀名)的文本

  3. 什么是字节码

    字节码是Python将程序编译后所得到的底层形式

    Python自动将字节码保存到后缀名为.pyc的文件中

  4. 什么是PVM

    PVM是Python虚拟机,它是Python的运行时引擎解释编译得到的代码

  5. 请列出两个Python标准执行模块的变体的名字

    Psyco、Shedskin以及forzen binaries是执行模块的所有变体

  6. CPython、Jython以及IronPython有什么不同

    CPython是Python语言的标准实现

    Jython 和IronPython分别是Python程序的Java和.NET的实现

    它们都是Python的编译器的替代实现


第三章 如何运行程序

本章学习启动Python程序的一般方法:通过交互地输入运行代码、通过系统命令行运行保存在文件中的代码、文件图标点击、模块导入、exec调用以及像DILE这样的IDE GUI


交互提示模式下编写代码

在系统提示环境下输入python后即可开始一个交互的Python会话

交互地运行代码

Python交互对话刚开始时将会打印两行信息文本

然后显示等待输入新的Python语句或表达式的提示符>>>

输入代码的结果将会在按下Enter键后在>>>这一行之后显示

在Unix系统中输入Ctrl+D退出,在MS-DOS和Windows系统中输入Ctrl+Z退出

由于交互式对话自动打印输入表达式的结果,所以不需要每次都刻意地输入”print”

为什么使用交互提示模式

交互提示模式根据用户的输入运行代码并响应结果

交互提示模式不会把代码保存到一个文件中,所以不能在交互会话中编写大量的代码

实验

由于代码是立即执行的,交互提示模式可以进行实验,这种方式不会带来任何破坏

当犯下一个错误的时候,会得到一条有意义的出错消息,指出该错误以及出错的代码行,而不会导致Python或计算机崩溃

测试

可以交互地导入模块文件,并且通过在交互提示模式中输入命令从而在它们定义的工具上运行测试

使用交互提示模式

  • 只能够输入Python命令,不能直接输入系统命令,可以通过os.system使用系统命令

  • 在文件中打印语句是必须的,在交互模式下则不需要

  • 无论是在交互模式下还是在一个文本文件中,没有嵌套的语句都在第一列,不需要缩进

  • 留意提示符的变换和复合语句

    在交互模式下输入两行或多行的复合语句时.提示符会发生变化,交互提示符会在第二行及后边的行由>>>变成...

    在IDLE界面中,第一行之后的行会被自动缩进

  • 在交互提示模式中,用一个空行结束复合语句,即必须按下Enter键两次才能运行一条复合语句

    在文件中空行是不需要的,并且如果有的话也将会忽略

  • 交互提示模式一次运行一条语句

输入多行语句

在脚本文件中,复合语句的后面不需要空行

交互提示模式每次只运行一条语句,必须两次按下Enter键来运行复合语句


系统命令行和文件

在交互模式下输入的代码是不会保存在一个文件中的,为了能够重新运行,不得不从头开始输入

为了能够永久的保存程序,需要在文件中写入代码,这样的文件通常叫做模块

第一段脚本

打开文本编辑器,并在命名为script1.py的新文本文件中输入如下Python语句:

1
2
3
4
5
6
# A first Python script
import sys # Load a library module
print(sys.platform)
print(2 ** 100) # Raise 2 to a power
x = 'Spam!'
print(x * 8) # String repetition

注释可以自成一行,也可以放置在代码行的右边

#符号后的文本直接作为工人阅读的注释而忽略,并且不会看做是语句的语法的一部分

使用命令行运行文件

将完整的文件名作为一条python命令的第一个参数,在系统shell提示中输入,从而要求Python来运行它

1
% python script1.py

使用特定的shell语法,把一个Python脚本的输出定向到一个文件中,从而保存起来以备以后使用或查看

1
% python script1.py > saveit.txt

如果所在的目录有工作的目录不同,需要给出脚本文件的完整路径

如果PATH没有包含Python的目录,需要给出Python的完整路径

使用命令行和文件

  • 注意Windows上的默认拓展名

    记事本会自动将文件保存成拓展名为.txt的文件

    Microsoft Word默认文件拓展名为.doc,它增加了Python语法中不合乎语法的一些格式字符

  • 在系统提示模式下使用文件拓展名,但是在导入时别使用文件拓展名

  • 在文件中使用print语句

Unix可执行脚本(#!)

  • 它们的第一行是特定的

    脚本的第一行往往以字符#!开始,其后紧跟着机器Python解释器的路径

  • 它们往往都拥有可执行的权限

    使用chmod +x file.py来实现这样的目的

    文件名可以没有.py后缀

Unix env查找技巧

可以在文件特定的第一行注释写入

1
#!/usr/bin/env python

点击文件图标

在Windows下,注册表使通过点击图标打开文件变得很容易

在非Windows系统中,也能够使用相似的技巧,但是图标、文件管理器、浏览的原理以及很多方面都有少许不同

在Windows中点击图标

源文件在Windows中外观为白色背景的图标,字节码有黑色底色

要运行文件,直接点击图标

input的技巧

在默认情况下,Python会生成弹出一个黑色DOS终端窗口作为文件的输入或输出,程序打印后退出终端窗口显示

可以简单地在脚本的最后添加内置input函数的一条调用语句

  • 可选的接收字符串,这些字符串将作为提示打印出来
  • 以字符串的形式为脚本返回读入的文本
  • 在系统shell的层面支持输入流的重定向

图标点击的其他限制

如果脚本出现了错误,错误信息的文字将会写在弹出的终端窗口上,这个窗口马上就会消失


模块导入和重载

每一个以拓展名.py结尾的Python源代码文件都是一个模块

其他的文件可以通过导入一个模块读取这个模块的内容

开始一个交互对话,通过简单的import可以运行创建的文件

在默认情况下,只是在第一次会话运行

在同一次会话中再次运行文件,需要调用imp标准库模块中可用的reload函数

1
2
>>> from imp import reload
>>> reload(script1)
  • reload函数载入并运行了文件最新版本的代码,如果已经在另一个窗口中修改并保存了它,那将反映出修改变化
  • reload函数希望获得的参数是一个已经加载了的模块对象的名次

模块的显要特性:属性

  • 模块往往就是变量名的封装,被认作是命名空间
  • 属性就是绑定在特定的对象上的变量名

一个模块文件的变量名可以通过importfrom两个Python语句读取,通过reload调用

使用文本编辑器创建一个名为myfile.py的单行的Python模块文件

1
2
3
a = 'dead'
b = 'parrot'
c = 'sketch'

使用import语句将模块作为一个整体载入,并使用object.attribute的语法获得变量名

1
2
3
4
% python
>>> import myfile
>>> myfile.a,myfile.b
('dead', 'parrot')

使用from语句从模块文件中获得变量名

1
2
3
4
% python
>>> from myfile import a,b,c
>>> a,b
('dead', 'parrot')

使用dir函数可以获得模块内部可用的变量名的列表

1
2
3
4
% python
>>> import myfile
>>> dir(myfile)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'b', 'c']

一些以双下划线开头并结尾的变量名,由Python预定义的内置变量名,对于解释器有特定的意义

模块和命名空间

Python程序往往由多个模块文件构成,通过import语句连接在一起

每个文件都是一个独立完备的变量包,即一个命名空间,即使在它们拼写相同的情况下,一个文件中的变量名是不会与另一个文件中的变量名冲突的

from把变量从一个文件复制到另一个文件,这可能导致在导入的文件中相同名称的变量被覆盖

import和reload的使用注意事项

  • 需要记住是何时导入的,才能知道能不能够reload
  • 需要记住当调用reload时需要使用括号,并且要记住让代码的最新版本运行时首先要使用reload
  • reload是补课传递的,重载一个模块的话只会重载该模块,而不能够重载该模块所导入的任何模

使用exec运行模块文件

使用exec()函数从交互提示模式启动文件的最新版本,而不必导入以及随后的重载

1
2
%  python
>>> exec(open('module.py').read())

exec的工作机制是在调用它的地方粘贴了代码,因此不需要在文件修改后进行模块重载,但是对于当前正在使用的变量有潜在的默认覆盖的可能


IDLE用户界面

IDLE是一个能够编辑、运行、浏览和调试Python程序的GUI,所有都能够在单独的界面实现

IDLE基础

Windows下在开始按钮的Python菜单中进行启动,也能够通过右键点击Python程序图标进行选择

在Unix类系统中,需要在命令行中启动IDLE的顶层脚本,或者通过点击位于Python的Lib目录下的idlelib子目录下的idle,pywidle.py运行

为了在IDLE中创建(或编写)源文件,可以打开一个新的编辑窗口:在主窗口,选择File下拉菜单,并选择New Windos来打开一个新的文本编辑窗口(或者Open...去编辑一个已存在的文件)

为了运行在IDLE中编辑的代码文件,首先选中文本编辑窗口,并点击窗口中的Run下来菜单,选择Run Module选项

RESTART信息告诉我们用户脚本的进程重新启动以运行编辑的脚本,并未独立的脚本输出做好准备

使用IDLE

  • 当保存文件时,必须明确地添加.py

  • 通过选择在文本编辑窗口RunRun Module运行脚本,而不是通过交互模式的导入和重载

  • 只需要重载交互地测试的模块

  • 可以对IDLE进行定制

  • 在IDLE中没有清屏选项

  • Tkinter GUI和线程程序有可能不适用于IDLE

  • 如果发生了连接错误,试一下通过单个进程的模式启动IDLE

    -n命令行标志位强制进入这种模式

  • 谨慎使用IDLE的一些可用的特性

    • 不需要运行import命令去获取已运行的顶层文件的变量名,但是IDLE之外的环境只有在从文件中导入才能使用
    • IDLE自动把目录修改为刚刚运行的一个文件的目录,并且将其目录添加到模块导入查找路径中,允许在没有搜索路径设置的时候导入文件,但是IDLE之外的环境无法导入文件

高级IDLE工具

  • 指向点击程序调试

    通过Debug菜单进行激活

    通过选择文本编辑窗口的RunRun Module选项开始运行脚本

    调试器生效后,可以在文本编辑器的某一行点击右键,从而在代码中设置断点停止它的运行、显示变量值等

  • 对象浏览器

    通过File菜单进行激活

    允许快速浏览模块搜索路径下的文件以及文件中的对象,通过点击文件或对象在文本编辑窗口打开对应的源代码

  • 自动缩进

  • 高级文本和文件搜索操作


其他的IDE

  • Eclipse和pyDev

    Eclipse在安装了pyDev插件后能够支持Python开发

    包含了对代码完成、语法突出显示、语法分析、重构、调试等功能的支持

  • Komodo

    • 包括标准的语法着色、文本编辑、调试以及其他特性
    • 项目文件、源代码控制继承、正则表达式调试和拖曳模式的GUI构建器
  • NetBeans IDE Python版

    代码完成、自动缩进和代码着色、编辑器提示、代码折叠、重构、调试、代码覆盖和测试、项目等等

  • PythonWin

    只能在Windows平台使用的免费的Python IDE

  • 其他


其他启动选项

嵌入式调用

在一些特定的领域,Python代码也许会在一个封闭的系统中运行

Python可以保存到一个文本文件中、存储在数据库中、从一个HTML页面获取、从XML文件解析等

这样的嵌入执行模式一般用来支持终端用户定制

冻结二进制的可执行性

通过这种方式,Python程序可以像其他启动的任何可执行程序一样被启动

文本编辑器启动的选择

大多数程序员友好型文本编辑器都支持Python程序的编辑甚至运行等功能

其他的启动选择

  • 在一些Macintosh系统通过拖曳Python的程序文件至Python解释器的图标去让程序运行
  • 在Windows中通过开始菜单中的运行...去启动Python脚本
  • Python的标准库有一些工具允许单独进程中的其他Python程序来启动Python程序

未来的可能


我应该选用哪种

刚刚开始学习Python,应该使用IDLE界面做开发

如果是一个有经验的程序员,可以在一个窗口使用你选择的文本编辑器,在另一个窗口通过命令行或点击图标启动编写程序

调试Python代码

  • 什么也不做

    阅读出错消息,并修改标记的行和文件

  • 插入print语句

  • 使用IDE GUI调试器

  • 使用pdb命令行调试器

    Python附带了一个名为pdb的源代码调试器,可以作为Python的标准库中的一个模块使用

    在pdb中,可以输入命令来一行一行地步进执行、显示变量、设置和清除断点、继续执行到一个断点或错误

  • 其它选项


本章习题

  1. 怎样才能开始一个交互式解释器的会话

    在Windows下可以通过点击开始按钮,选择程序,点击Python,然后选择Python (command line)菜单选项来开始一个交互会话

    在Windows下可以在系统终端窗口(在Windows下的一个命令提示窗口)输入python作为一条系统命令行来实现同样效果

    另一种方法是启动IDLE,因为它的主Python shell窗口是一个交互式会话窗口

    如果没有设置系统的PATH变量来找到Python,需要使用cd切换到Python安装的地方,或输入python的完整路径而不是仅仅python (例如,在Windows下输入C: \Python30\python)

  2. 你应该在哪里输入系统命令行来启动一个脚本文件

    在输入系统命令行的地方,也就是你所在的平台提供给作为系统终端的地方:

    • 在Windows下的系统提示符
    • 在UNIX、Linux或Mac OS X上的xterm或终端窗口等
  3. 指出运行保存在一个脚本文件中的代码的四种或更多的方法

    一个脚本(实际上是模块)文件中的代码可以通过系统命令行、文件鼠标点击、导入和重载、exec内置函数以及像IDLE的Run→Run Module菜单选项这样的IDE GUI选取来运行

    在UNIX上,还可以使用#!技巧来运行,并且一些平台还支持更为专用的启动技术(例如,拖曳)
    此外,一些文本编辑器有运行Python代码的独特方式,一些Python程序作为独立的“冻结二进制”可执行文件提供

    并且一些系统在嵌入式模式下使用Python代码,其中代码由C、C++或Java等语言编写的一个封闭程序自动运行

    后几种技术通常用来提供一个用户定制层级

  4. 指出在Windows下点击文件图标运行脚本的两个缺点

    打印后退出的脚本会导致输出文件马上消失,在你能够看到输出之前(这也是input这个技巧之所以有用的原因)

    你的脚本产生的同样显示在输出窗口的错误信息,会在查看其内容前关闭(这也是对于大多数开发任务,系统命令和IDLE这类IDE之所以更好的原因)

  5. 怎样运行一个脚本

    在默认情况下,Python每个进程只会导人(载入)一个模块一次,所以如果你改变了它的源代码,并且希望在不停止或者重新启动Python的情况下运行其最新的版本,你将必须重载它,在你重载一个模块之前至少已经导入了一次

    在系统命令行中运行代码,或者通过图标点击,或者像使用IDLE这样的IDE,这些启动机制往往每次都是运行源代码的最新版本

    在你希望运行的文件所在的文件编辑窗口,选择窗口的RunRun Module菜单选项,这可以将这个窗口的源代码作为顶层脚本文件运行,并在交互Python shell窗口显示其输出

  6. 列举2个使用IDLE的潜在的缺点

    IDLE在运行某种程序时会失去响应,特别是使用多线程(本书话题之外的一个高级技巧)的GUI程序

    IDLE有一些方便的特性在你一旦离开IDLE GUI时会伤害你:例如在IDLE中一个脚本的变量是自动导入到交互的作用域的,而通常的Python不是这样

  7. 什么是命名空间,它和模块文件有什么关联

    命名空间就是变量( 也就是变量名)的封装,它在Python中以一个带有属性的对象的形式出现

    每个模块文件自动成为一个命名空间:也就是说,一个对变量的封装

    这些变量对应了顶层文件的赋值

    命名空间可以避免在Python程序中的命名冲突一因为每个模块文件都是独立完备的命名空间,文件必须明确地导入其他的文件,才能使用这些文件的变量名

    import this会触发Python内部的一个彩蛋,它将显示Python语言层面之下的设计哲学

CATALOG
  1. 1. 第一章 问答环节
    1. 1.1. 人们为何使用python
      1. 1.1.1. 软件质量
      2. 1.1.2. 开发效率
      3. 1.1.3. Python是”脚本语言”吗
    2. 1.2. 好吧,Python的缺点是什么呢
    3. 1.3. 如今谁在使用python
    4. 1.4. 使用python可以做些什么
      1. 1.4.1. 系统编程
      2. 1.4.2. 用户图形接口
      3. 1.4.3. Internet脚本
      4. 1.4.4. 组件集成
      5. 1.4.5. 数据库编程
      6. 1.4.6. 快速原型
      7. 1.4.7. 数值计算和科学计算编程
      8. 1.4.8. 游戏、图像、人工智能、XML、机器人等
    5. 1.5. Python如何获得支持
    6. 1.6. Python有哪些技术上的优点
      1. 1.6.1. 面向对象
      2. 1.6.2. 免费
      3. 1.6.3. 可移植
      4. 1.6.4. 功能强大
      5. 1.6.5. 可混合
      6. 1.6.6. 简单易用
      7. 1.6.7. 简单易学
    7. 1.7. Python和其他语言比较起来怎么样
    8. 1.8. 本章习题
  2. 2. 第二章 Python如何运行程序
    1. 2.1. Python解释器简介
    2. 2.2. 程序执行
      1. 2.2.1. 程序员的视角
      2. 2.2.2. Python的视角
        1. 2.2.2.1. 字节码编译
        2. 2.2.2.2. Python虚拟机(PVM)
        3. 2.2.2.3. 性能的含义
        4. 2.2.2.4. 开发的含义
    3. 2.3. 执行模块的变体
      1. 2.3.1. Python实现的替代者
        1. 2.3.1.1. CPython
        2. 2.3.1.2. Jython
        3. 2.3.1.3. IronPython
      2. 2.3.2. 执行优化工具
        1. 2.3.2.1. Psyco实时编译器
        2. 2.3.2.2. Shedskin C++转换器
      3. 2.3.3. 冻结二进制文件
      4. 2.3.4. 其他执行选项
      5. 2.3.5. 未来的可能性
    4. 2.4. 本章习题
  3. 3. 第三章 如何运行程序
    1. 3.1. 交互提示模式下编写代码
      1. 3.1.1. 交互地运行代码
      2. 3.1.2. 为什么使用交互提示模式
        1. 3.1.2.1. 实验
        2. 3.1.2.2. 测试
      3. 3.1.3. 使用交互提示模式
        1. 3.1.3.1. 输入多行语句
    2. 3.2. 系统命令行和文件
      1. 3.2.1. 第一段脚本
      2. 3.2.2. 使用命令行运行文件
      3. 3.2.3. 使用命令行和文件
      4. 3.2.4. Unix可执行脚本(#!)
      5. 3.2.5. Unix env查找技巧
    3. 3.3. 点击文件图标
      1. 3.3.1. 在Windows中点击图标
      2. 3.3.2. input的技巧
      3. 3.3.3. 图标点击的其他限制
    4. 3.4. 模块导入和重载
      1. 3.4.1. 模块的显要特性:属性
        1. 3.4.1.1. 模块和命名空间
      2. 3.4.2. import和reload的使用注意事项
    5. 3.5. 使用exec运行模块文件
    6. 3.6. IDLE用户界面
      1. 3.6.1. IDLE基础
      2. 3.6.2. 使用IDLE
      3. 3.6.3. 高级IDLE工具
    7. 3.7. 其他的IDE
    8. 3.8. 其他启动选项
      1. 3.8.1. 嵌入式调用
      2. 3.8.2. 冻结二进制的可执行性
      3. 3.8.3. 文本编辑器启动的选择
      4. 3.8.4. 其他的启动选择
      5. 3.8.5. 未来的可能
    9. 3.9. 我应该选用哪种
      1. 3.9.1. 调试Python代码
    10. 3.10. 本章习题