2-1 正规地说一句话
- python中包含哪些语句
1 . 赋值语句
2 . if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。
3 . for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
4 . while语句,当条件为真时,循环运行语句块。
5 . try语句。与except, finally, else配合使用处理在程序运行中出现的异常情况。
6 . class语句。用于定义类型。
7 . def语句。用于定义函数和类型的方法。
8 . pass语句。表示此行为空,不运行任何操作。
9 . assert语句。用于程序调适阶段时测试运行条件是否满足。
10 . with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行退出后释放锁。
11 . yield语句。在迭代器函数内使用,用于返回一个元素。
12 . raise语句。抛出一个异常。
13 . import语句。导入一个模块或包。常用写法:from module import name, import module as name, from module import name as anothername - 序列赋值
如果左边的变量是序列,右边的对象也是序列,两者将一一对应地进行赋值
2-2 print能干的事情
- eval
help(eval)
把字符串中符合python表达式的东西计算出来
- print详解
1 . %d,只能输出整数,int类型
2 . %4d,要求该整数占有四个位置,若整数位数不够,在前面增加空格
3 . %f,输出浮点数
4 . %.2f,按要求输出小数位数,如果要求的小数位数过多,后面就用0补全 - print3,请用print(),要加个括号
- print有一个特点,就是输出的时候,每行后面都自动加上一个换行符号\n,
加逗号可取消换行
2-3 从格式化表达式到方法
- %表达的一种输出格式化表达式
str.format,表达一种格式化方法 - 基本的操作
所谓格式化方法,就是可以先建立一个输出字符串的模板,然后用format来填充模板的内容
2-6 难以想象的for
- for的基本操作
1 . for是用来循环的,是从某个对象那里依次将元素读取出来
2 . for支持str、list、set、tuple、dict、文件、列表解析式
2-7关于循环的小伎俩
- range
- zip
1 . zip()的作用就是把list1和list2两个对象中的对应元素放到一个元组(a,b)中
2 . zip(*),zip的反向操作,解压缩
3 . enumerate
2-8 让人欢喜让人忧的迭代
1 . 循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。
2 . 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。
3 . 递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
4 . 遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。
- 逐个访问
可迭代对象:常常将那些能够用for来一个一个读取元素的对象,就称之为可迭代的对象。那么for也就被称之为迭代工具。所谓迭代工具,就是能够按照一定顺序扫描迭代对象的每个元素(按照从左到右的顺序)
2-9 大话题小函数(1)
- lambda
1 . 在lambda后面直接跟变量
2 . 变量后面是冒号
3 . 冒号后面是表达式,表达式计算结果就是本函数的返回值
- map
基本样式是:map(func, seq),func是一个函数,seq是一个序列对象。
在执行的时候,序列对象中的每个元素,按照从左到右的顺序,依次被取出来,并塞入到func那个函数里面,并将func的返回值依次存到一个list中
2-10 大话题小函数(2)
- reduce
map是上下运算,reduce是横着逐个元素进行运算,并产生单个值 - filter
2-11 Python文档
- 查看python文档
1 .
dir(list)
help(list._____mul_)
2 .
还有一个文档:doc,help调用的其实就是这个函数里面的内容
print(list._____mul_._____doc_)
- 给自己的程序加上文档
在你所编写的程序中用三个双引号或者单引号成对地出现,中间写上有关文档内容。
2-12 重回函数
- 函数的基本结构
参宿的意义完全取决于对象的类型。在python中,将这种依赖关系,称之为多态
python中为对象编写接口,而不是为数据类型。 - 注意事项
空白行在交互模式提示符下很重要。模块文件中符合语句内的空白行常被忽视。但是,当你在交互模式提示符下输入代码时,空白行则是会结束语句。
2-13 不确定参数的数量
- *arg
如果输入的参数过多,其它参数全部通过*arg,以元组的形式传给了参数(变量)arg。请看官注意,我这里用了一个模糊的词语:参数(变量),这样的表述意思是,在传入数据前,arg在函数头部是参数,当在函数语句中,又用到了它,就是变量
2-16 类的基本认识
- 面向对象
对象指的是类的实例
2-17 编写类之一创建实例
- 创建类
类的名称一般用大写字母开头,这是惯例
class Person:
def __init__(self, name, lang, website):
self.name = name
self.lang = lang
self.website = website
1 . 首先呈现出来的是一个名为:_init()
的函数,注意,这个函数是以两个下划线开始,然后是init,最后以两个下划线结束。
2 . 类就是一种对象类型
3 . 在构建Person类的时候,首先要做的就是对这种类型进行初始化,也就是要说明这种类型的基本结构,一旦这个类型的对象被调用了,第一件事情就是要运行这个类型的基本结构,也就是类Person的基本结构
4 . 在类中,基本结构是写在_init()
这个函数里面。故这个函数称为构造函数,担负着对类进行初始化的任务
5 . 当类Person实例化后立刻运行_init_()函数
类和实例
-
self的作用
1 . 在类内部,我们会写很多不同功能的函数,这些函数在类里面有另外一个名称,曰:方法
2 . 通过类的构造函数中的参数传入的这些数据也想在各个方法中被使用,就需要在类中长久保存并能随时调用这些数据。为了解决这个问题,在类中,所有传入的数据都赋给一个变量,通常这个变量的名字是self
3 . 在构造函数中的第一个参数self,就是起到了这个作用——接收实例化过程中传入的所有数据,这些数据是通过构造函数后面的参数导入的。显然,self应该就是一个实例(准确说法是应用实例),因为它所对应的就是具体数据类的实例info对应着self,info通过self导入实例属性的所有数据
self.name中的name和构造函数的参数name没有任何关系,它们两个一样,只不过是一种起巧合(经常巧合),或者说是写代码的人懒惰,不想另外取名字而已,无他
2-18 编写类之二方法
- 编写和操作方法
编写方法的过程和编写一个函数的过程一样,需要注意的就是要在参数列表中第一个写上self,即使没有其它的参数
2-20 编写类之四再论继承
2-21 命名空间
- 所谓的命名空间,就是这些命名(名称)的集合,它们分别与相应的对象有对应关系
- 命名空间是从所定义的命名到对象的映射集合
- 程序在查询上述三种命名空间的时候,就按照从里到外的顺序,即:Local Namespaces --> Global Namesspaces --> Built-in Namesspaces
2-22 类的细节
- 绑定和无绑定方法
无绑定类方法对象:无self
绑定实例方法对象:有self - 调用绑定实例方法对象
- 调用无绑定类方法对象
不通过实例,而是用类进行点号运算来获得方法函数(ClassName.method_function)
调用的时候必须传入实例做为第一参数
2-23 Import 模块
- 认识模块
import random
help(random) #在终端运行
https://docs.python.org/2/library/
2-24 模块的加载
- import的工作流程
1 . 搜索。就是python要能够找到import的模块
2 . 编译。找到模块文件之后,将其编译成字节码,就是那个.pyc文件里面的。注意,不是什么时候都编译的,只有第一次运行时候才编译
3 . 运行
2-25 私有和专有
- 私有函数
以“__”双划线开头的,将这类命名的函数/方法称之为“私有函数”
1 . 私有函数不可以从它们的模块外面被调用
2 . 私有类方法不能够从它们的类外面被调用
3 . 私有属性不能够从它们的类外面被访问 - 专有方法