《Python学习手册》(第四版)学习笔记1

第一部分-使用入门:

主要包括Python语言的介绍、程序运行的过程以及如何运行程序。

目录

1. 关于《Python学习手册》
2. 人们为何使用Python
3. Python的角色定位
4. Python的优缺点
5. Python的设计理念
6. Python的运行过程
7. Python执行模块的变体
8. 安装Python
9. 运行Python
10. IDLE


一、关于《Python学习手册》

本书由O’Reilly编写,和作者的另一本书《Programming Python》互补。两者分别涵盖了核心语言与应用程序设计。


二、人们为何使用python

1、软件质量

Python更注重可读性、一致性和软件质量。
同时,Python支持软件开发的高级重用机制,如面向对象程序设计。

2、提高开发者的效率

Python代码的大小往往只用C++或Java代码的1/5~1/3。
(Python“符合大脑思维习惯”,以统一并有限的方式进行交互,可以在一套紧凑的核心思想基础上进行自由发挥。)
(Python程序员在阅读和编写代码时无需经常查阅手册。)
(Python具有以下特性:简洁的语法、动态类型、无需编译、内置工具包)

3、程序的可移植性

绝大多数(?)的Python程序不做任何改变即可在所有主流计算机平台运行。
同时,Python提供了多种可选的独立程序,包括用户图形界面、数据库接入、基于Web的系统等。

4、标准库的支持

Python内置了众多预编译并可一直的功能模块(标准库standard library)。
Python代码可以调用C和C++的库,可以被C和C++程度调用,可以与Java组件继承,可以与COM和NET等框架进行通信,并可以通过SOAP、XML-RPC和CORBA等接口(?)与网络进行交互。


三、Python的角色定位

1、Python是“脚本语言”吗

Python可以定义为面向对象的脚本语言。人们往往以“脚本”而不是“程序”来描述Python的代码文件。

2、实际上,人们往往给Python冠以以下三个不同的角色:

1)Shell工具
从命令行执行,实现诸如文本文件的处理以及调用其他程序等任务。

2)控制语言
控制或重定向其他应用程序组件的“粘接层”(从技术上讲,这基本上就是Python的常规角色。)

3)使用快捷的编程语言


四、Python的优缺点

1、Python技术上的优点

1)面向对象

Python的OOP特性使它成为面向对象系统语言如C++和Java的理想脚本工具。

2)开源

Python开发是由社区驱动的。
Python的创始者Guido van Rossum是Python社区内公认的“终身的慈善独裁者”【Benevolent Dictator for Life(BDFL)】。
Python语言的修改必须遵循一套规范的有约束力的程序【Python Enhancement Proposal(PEP)】协议,并需要经过规范的测试系统和BDFL进行彻底检查。

3)可移植

除了语言解释器外,Python发行时自带的标准库和模块在实现上也懂尽可能考虑了跨平台的移植性。
Python程序自动编译成可移植的字节码,在已安装兼容版本Python的平台上运行的结果都是相同的。

4)功能强大

Python丰富的工具集使它介于传统的脚本语言和系统语言之间。

1.动态类型
Python在运行过程中随时跟踪对象的种类,不需要代码中关于复杂的类型和大小的声明。

2.自动内存管理
Python自动进行对象分配,当对象不在使用时将自动撤销对象(“垃圾回收”),当需要时自动扩展或收缩。

3.内置对象类型
Python提供了常用的数据结构作为语言的基本组成部分。

4.内置工具
为了对以上对象类型进行处理,Python自带了很多强大的标准操作,包括合并(concatenation)、分片(slice)、排序(sort)和映射(mapping)等。

5.库工具

6.第三方工具
由于Python是开源的,它鼓励开发者提供自己的预编码工具。

5)可混合

Python是很好的快速原型工具:出于开发速度考虑,系统可以先用Python实现,之后转移至C,根据不同时期的性能需要逐步实现系统。

6)简单易用

Python可立即执行程序,这形成了一种交互式编程体验和不同情况下快速调整的能力。Python一度被称为“可执行的伪代码”。

7)简单易学

2、Python的缺点

Python没有将代码编译成底层的二进制代码,程序执行速度较慢。
即便当今的CPU的处理速度很快,在一些应用领域仍然需要优化程序的执行速度,如:数值计算和动画。如果在以上领域工作,通常分离一部分需要优化速度的应用,将其转换为编译好的扩展,并在整个系统中使用Python脚本将这部分应用连接起来。


五、Python的设计理念

1、Python的彩蛋

在任意一个Python交互解释器中键入import this命令,会显示一段话描述Python的设计原则。
“EIBTI”即“明了胜于晦涩”。

2、Python是工程,而不是艺术

Python vs Perl

Python的创立者所受的是数学家的训练,因此他创造出来的语言具有高度的统一性,其语法和工具集都相当一致。再者,就像数学一样,其设计也具有正交性(orthogonal),也就是这门语言大多数组成部分都遵循以小组核心概念。例如:一旦掌握Python的多态,剩下的就只是细节而已。(?)

相比之下,Perl语言的创立者是语言学家。Perl中相同的任务有很多方式可以完成,并且语言材料的交互对背景环境敏感,有时还像自然语言一样有着相当微妙的方式。基于这种设计,Perl语言及其用户社群在编写代码时,一直在鼓励表达式的自由化。一个人的Perl代码可能和另一个人的完全不同。编写独特、充满技巧性的代码,常常是Perl使用者之间的骄傲来源。


六、Python的运行过程

Python安装后包括:一个解释器和一些支持的库

1、解释器

1)Linux和Mac OS X已预装Python
2)Python程序仅是一个包含Python语句的文本文件,惯例以.py结尾。

2、字节码

1)程序执行时,Python内部会先将源代码编译成字节码
字节码是源代码底层的、与平台无关的表现形式。Python通过把每一条源语句分解为单一步骤来将这些源语句翻译成一组字节码指令。

2)Python保存字节码以实现启动速度的优化,通常扩展名为.pyc
Python编译时会检查源文件和字节码文件的时间戳。如果上次保存字节码之后没有修改过源代码的话,Python将会自动加载.pyc文件并跳过编译步骤。

3)如果Python无法再机器上写入字节码,字节码会在内存中生成并在程序结束时简单地丢弃。(严格地讲,只有文件导入的情况下,字节码才被保存。交互提示模式下录入的代码不会被保存为字节码。)

3、Python虚拟机(PVM)

PVM是“Python解释器”的最后一步,实际上就是迭代运行字节码指令的一个大循环,是实际运行脚本的组件。

4、Python的运行

相对于C和C++这类完全编译语言而言,Python没有“build”或“make”的步骤。
相对于静态语言而言,Python的开发和执行环境没有区别。


七、Python执行模块的变体

1、Python编译器的替代实现

1)CPython

CPython是Python的标准实现,相对于其他替代系统,运行速度最快,最完整而且也最健全。

2)JPython

JPython的目标是让Python代码能够脚本化Java应用程序。它通过将Python代码翻译成Java字节码,实现了与Java的无缝集成。
JPython比CPython要慢,而且也不够健壮。

3)IronPython

IronPython比CPython和JPython都要新(由JPython创始人开发)。其设计目的是让Python程序可以与.NET框架及与之相对应的Linux上的开源Mono(?)编写的应用相集成。

IronPython将.NET和C#程序语言的运行系统设计成与语言无关的对象通信层。它允许Python程序既可以作为客户端,也可以用作服务器端组件,还可以与其他.NET语言进行通信。IronPython实现上和JPython类似。

2、执行优化工具

1)Psyco

Psyco是一个扩展字节码执行模块的组件,可以让程序运行的更快。在程序运行时,Psyco收集了正在传递过程中的对象的类被信息,将这些信息用来裁剪对象的类型,从而生成更高效率的机器码。因为字节码的转化与程序运行同时发生,所以Psyco被看做是一个即时编译器(JIT)。(Psyco实际上与Java中的JIT稍有不同,是一个专有的编译器。如果程序的一部分在不同时候采用了不同的数据类型,Psyco会生成不同欧冠版本的机器码。)

Psyco的缺点是:只能为Intel x86架构的芯片生成机器代码。

(作者称Pysco似乎最终会被PyPy替代。但现在似乎有一种观点认为Python追求执行速度是一种伪需求。)

2)Shedskin C++转换器

Shedskin尝试将Python代码变为C++代码,然后使用C++编译器编译为机器码。它给Python程序施加了一种隐晦的静态类型约束。(?)

3)冻结二进制文件

将字节码、PVM以及程序需要的支持文件捆绑成单独的文件包,形成一个单独的可执行的二进制程序。py2exe、PyInstaller、freeze是三种常用工具。
对于接收者来说,代码是隐藏的。
对于商业软件开发者来说,单文件封装的架构特别有吸引力。

4)其他执行选项

Stackless
Cython
Parrot


八、安装Python

1、web-based ,executable , embeddable zip file区别

下载Python时一般有三种不同的文件:
web-based: 透过网络安装的,就是执行安装后才透过网络下载python
executable: 可執行文件的,既把要安装的python全部下载好在本机安装
embeddable zip file: zip 压缩档,就是python打包成zip压缩包
以上三种仅是下载形式不同,软件内容是一样的

2、安装后要配置系统环境变量PATH,使其包含Python的安装目录


九、运行Python

1、交互提示模式

1)在系统提示环境下输入“python”进入交互提示模式。

2)交互式对话自动打印输入表达式的结果。在这个提示模式下,不需要每次刻意输入print语句

3)退出:
在UNIX系统中输入Ctrl-D
在Windows和MS-DOS系统中输入Ctrl-Z

4)多行语句:
a.当在交互提示模式中输入所有语句行,并两次按下Enter键后立即运行这条语句。
b.在shell窗口中,交互提示符会在第二行及以后由>>>变为…
在IDLE界面中,第一行之后的行会被自动缩进
c.点击Enter或Ctrl-C返回主提示模式
d.不能在交互提示模式中复制并粘贴多行代码,除非这段代码的每条复合语句后都包含空行

5)Python中,所有没有嵌套的语句都要在第一列(最左边),否则可能会出现“SyntaxError”提示。

2、模块

1)通常将写入代码以永久保存程序的文件称为模块

2)可以直接运行的模块文件也称为脚本(一个顶级程序文件的非正式说法)

3)使用命令行运行文件% python example.py
Windows中可以省略Python的名字。系统会通过Windows注册表找到用哪个程序运行一个文件。

4)UNIX可执行脚本(#!)
a.第一行
由#!开始(通常叫做hash bang),其后紧跟Python解释器的路径
或者写为#!/usr/bin/env python,env程序可以通过系统搜索路径的设置定位Python解释器,使代码更具可移植性。
b.拥有可执行权限
c.可以不加.py后缀
d.Windows的DOS系统shell会忽略#!

3、模块导入和重载

1)模块实Python程序架构的一个核心概念。
大的程序往往以多个模块文件的形式出现,并导入了其他模块文件的工具,其中一个模块文件设计成主文件(顶层文件,启动后能运行整个程序的文件)

2)import example
导入开销很大,因此只在每次会话的第一次导入时运行。

3)from myfile import attribute
from复制了模块的属性,使属性成为接收者的直接变量。
这可能导致在导入的文件中的同名变量被覆盖。

4)
>>>import imp
>>>imp.reload(example)
或者
from imp import reload
reload(attribute)
a.reload函数可以在同一次会话中再次运行文件
b.reload返回值是一个Python模块对象
c.reload是不可传递的,重载一个模块时不会重载该模块导入的任何模块

5)使用exec运行模块文件
exec(open('example.py').read
a.每次运行文件的最新版本。
b.和from一样对当前使用的变量有潜在的默认覆盖的可能

4、其他

1)Python2.6和3的差异

a.print语句
Python3中将print从语句变为函数
b.reload函数
Python3中将reload函数从内置移到了imp标准库模块中
c.exec函数
Python2.6中的
exec(open('module.py'))
execfile('module.py')
两种形式在Python3中都不可用

2)input小技巧

Windows中运行脚本后可能立即退出,看不到运行结果。
可以在最后一行加一句
input()

3)dir函数

dir(example)
内置的dir函数可以用来获取模块内部可用的变量名的列表。
双下划线开头并结尾的变量名是Python预定义的内置变量名。


十、IDLE

IDLE是Python官方的IDE,内置无需下载。
为了纪念Monty Python成员Eirc Idle而命名。
(据说IDLE会有一些Bug)

《Python学习手册》——使用入门相关推荐

  1. python学习手册条件-Python学习手册(第4版)pdf

    Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...

  2. python学习手册中文版免费下载-Python学习手册

    Python学习手册第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者.本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成 ...

  3. python学习手册中文版免费下载-Python学习手册 第三版

    <Python学习手册(第3版)>讲述了:Python可移植.功能强大.易于使用,是编写独立应用程序和脚本应用程序的理想选择.无论你是刚接触编程或者刚接触Python,通过学习<Py ...

  4. Python学习手册(套装上下册)(原书第5版)

    Python学习手册(原书第5版) 本书分为上.下两册. 如果你想动手编写高效.高质量并且很容易与其他语言和工具集成的代码,本书将快速地帮助你利用Python提高效率.本书基于Python专家的流程培 ...

  5. python三大圣经-读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」...

    0.前言 在此之前,我已经为准备学习python的小白同学们准备了轻量级但超无敌的python开发利器之visio studio code使用入门系列.详见 1.我是谁 我是一个使用python超10 ...

  6. python基础语法手册-Python学习手册(第4版)pdf

    Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...

  7. python零基础学习书-Python零基础到进阶必读的书藉:Python学习手册pdf免费下载

    提取码:0oor Google和YouTube由于Python的高可适应性.易于维护以及适合于快速开发而采用它.如果你想要编写高质量.高效的并且易于与其他语言和工具集成的代码,<Python学习 ...

  8. python学习手册-Python学习手册

    Python学习手册第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者.本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成 ...

  9. python学习手册教程_python学习手册:如何学习python学习教程?

    常听人说:选择不对,努力也白费!如今互联网行业火热,越来越多人加入到Python.JAVA.HTML5.大数据的领域来.关于学Python.JAVA.HTML5.大数据到底哪个编程语言好?小编不能帮你 ...

  10. 《Python学习手册》读书笔记

    原文地址为: <Python学习手册>读书笔记 之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<P ...

最新文章

  1. 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库
  2. 基于群集的Hyper-v Server副本
  3. Python 读取 YUV(NV12) 视频文件-优化
  4. 学习腾讯的产品管理之道
  5. (转) android UI进阶之用gallery实现可滑动的Tab
  6. java中attribute用法_Java FieldPosition getFieldAttribute()用法及代码示例
  7. 小度智能音响拆解 芯片_拆解报告:小度人工智能音箱1S
  8. OpenShift 4 之 GitOps(7)用ArgoCD部署Pacman应用集群
  9. ceph客户端使用_ceph存储之ceph客户端
  10. 获取本机外网ip地址
  11. Spring Setting
  12. RedHat免费订阅账号注册方式
  13. 邮件发送时间怎么修改 python_使用python通过电子邮件发送日期时间
  14. Linux下创建和删除用户
  15. 我错过了乔布斯和初代 iPhone,十年后幸好没错过你
  16. 阿里云IMM智能媒体文件预览
  17. Dynamics 365 On-premises V9的UCI界面下如何显示Audit History
  18. Ubuntu16.04+CUDA8.0+GTX960M安装
  19. 基于 vue.js 的仿QQ聊天室
  20. THz:通信系统的研究现状与应用展望

热门文章

  1. 信号与系统 matlab综合实验 pdf,《信号与系统——MATLAB综合实验》 谷源涛-第三讲.pdf...
  2. R 学习笔记《四》 R语言初学者指南--载入数据
  3. 计算机一级cad试题,全国计算机等级考试一级试题与答案(25套)(1)2
  4. AIDE手机编程初级教程(零基础向) 3.2.2 设计欢迎页(补充)
  5. php中dump是什么文件怎么打开,Win8/Win10 dump文件怎么打开?dump文件分析工具下载及使用教程...
  6. “人人都是数据科学家从新开始用Python学习数据科学的完整教程P1
  7. 百度视频播放器android,百度视频播放器
  8. c语言数组实现冒泡排序
  9. python 朋友圈点赞收费吗_朋友圈点赞会收费吗,人工代刷微信点赞怎么操作
  10. 趣谈网络协议-数据中心