第一章,问答环节
python的优点,面向对象,free,可移植,功能强大(动态类型,自动内存管理等),可混合,simple
python的缺点是相比c/c++,速度还不够快。
python的主要用途:系统编程,用户图形接口,internet脚本,组件集成,数据库编程,快速原型,数值计算,多媒体和人工智能
第二章,python如何运行
PVM(python虚拟机),运行.pyc文件字节码。这里的m.pyc字节码不是机器的二进制码,二是python定义的一种表现形式。因此也是python比c/c++慢的原因。一般的,python的运行速度介于编译语言和解释语言之间。
执行优化工具:psyco实时编译器,shedskin c++转换器,将python变成二进制文件,加快执行速度。
冻结二进制文件:将python字节码,PVM等一起打包成一个单独的文件包。
第三章,如何运行程序
运行一个python程序
编写好一个python文件以后,如果想在其他文件中使用,需要使用import。
但是,import第一次之后再使用就不会运行,因为import是一个开销很大的过程。如果希望再执行,可以reload函数。
模块的属性。例如在spam.py中,使用属性name。
可以使用如上两种方式。
Python的IDE:IDLE,Eclipse,Komodo,pythonWin
第四章,python的对象类型
python的核心数据类型(内置对象)
对象的分类
数字:除了常用的加减乘除以外,可以使用math,random等包。
字符串:字符串和c中的字符串类似,但是对象不能改变,例如给s[0]赋值就不可以。
列表:
字典:是一个映射
元组:不可改变的列表。
文件:文件的读和写
此外,还有集合set,十进制数decimal,布尔值等其他核心类型。
第五章,数字
Python表达式操作符及程序:
Python中的变量和基本表达式。
关于str和repr显示格式。repr是默认交换格式回显,也就是代码直接运行表示,str和print一样,是用户友好格式。例如,输入1/3。
一些其他的内置数学工具:math模块,random模块
集合set
第六章,动态类型简介
python的变量,对象和引用是通过一条语句完成的,不同于静态编译语言java/c/c++,例如:
>>a=3,从python角度:
python中的类型属于对象,而不是变量
python中的变量不使用时会被动态收回,类似于java中的垃圾回收。共享引用:如下图所示。
共享引用和拷贝,两者不同(上面是共享引用,下面是拷贝)
共享引用和相等
第七章,字符串
一,单引等于双引
二,用转义序列代表特殊字节
第三,三重引号编写多行字符串块
第四,索引和分片
第五,强制类型转换
第六,字符串格式化%d,%s
第七,字符串方法调用
第八章,列表与字典
第一,列表的常量和操作
第二,字典的常量和操作
第九章,元组,文件与其他
元组(tuple)是由简单的对象组成,与列表类似,但是不能在原处修改。
常见的元组和运算
注意,元组的不可变性只适用于元组本身顶层而并非内容。
为什么有了列表还要元组?是因为元组的不可变性保证不会被另一个引用修改。
常见的文件运算:
【例】
eval()方法:将元素变成对象,例如把字符串变成列表
pickle模块类似于序列化,将python的对象保存在文件中,不需要使用字符串。
相等性和一致性:
==:表示相等性
is:表示一致性
python的类型层次
第十章,python语句简介
python的语句的特点是不需要括号,不要分号也不需要大括号
第十一章,赋值,表达式和打印
一,赋值语句
一些增强赋值语句
常见的python表达式
打印语句
【例】
第十二章,if测试
通用格式if
python的语法规则
语句是逐个运行的;
块和语句的边界会自动被检测
复合语句=首行+:+缩进语句
空白行,空格以及注释通常被忽略
文档字符串会被忽略,但会被保存由工具显示
python中的真值测试
第十三章,while和for循环
while的一般格式
break,continue,pass和else循环
说明,循环else分句是python所特有的。例如查找素数的python代码:
for循环的一般格式:
【例】按块读取文本
迭代器:
循环计数器:range()
用range()还可以用来遍历数列。例如,将L中的每个数字变大1:
zip()函数,把多个序列并排配对:
通常情况下,zip()函数可以用来构造字典。
第十四章,文档
python的文档资源
dir函数:抓取对象内可用所有属性列表的简单方式。
help()函数:输入help(str.replace())
PyDoc:HTML报表
第十五章,函数基础
def语句
另外,上例说明,python中的函数是多态的。
第十六章,作用域和参数
python中作用域的LEGB查找原则:
global语句:
工厂函数:
一个能够记住嵌套作用域的变量值的函数。
python中的参数传递:
不可变参数是通过值进行传递;
可变对象是通过指针进行传递;
参数匹配模型
任意参数的实例:
(1)收集参数
(2)分解参数
第十七章,函数的高级话题
函数设计概念:
耦合:对于输入使用参数,对于输出使用return。只有真正有必要的情况下使用全局变量。不要改变可变类型的参数。避免改变在另一个模块文件中的变量。
内聚:每一个函数都应该有一个单一的统一的目标。
大小:每一个函数应该相对较小。
第十八章,模块
import a.py
模块搜索路径:
程序的主目录
pythonpath目录
标准链接哭目录
任何.pth文件的内容
第十九章,模块代码编写基础
同时,from语句可以达到同样的效果。
模块命名空间:一旦模块加载后,它的作用域就变成了模块对象的属性的命名空间。
重载模块 reload
reload和import,from不同的是:reload是python中的内置函数而不是语句;传给reload的是已经存在的模块对象,而不是变量名。
第二十章,模块包
包导入实例