《python核心编程》学习笔记

第一本python基础的书籍《python核心编程》,不管看不看得懂,都去看了,怕坚持不下来,没做章节后面的题目,最多也只是对着章节里的例子程序敲敲代码。把自己觉得重要的东西记下来。看完一遍可能也消化不了30%,看完一遍之后,我不大愿意再重新去深究里面看不懂的内容,希望再找几本经典的python书籍去学习,可能看的书多了,再去学习比较那些看不懂的地方,翻翻以前的书,这样更有意义。

       《python核心编程》,主要让我了解了python要处理的各种对象,数字,字符串,列表,元组,字典,集合,文件,函数,方法,类,模块等。还有对这些对象如何操作,操作的方法有包括 操作符、操作函数、对象自带的内建方法及属性等。下面是一些章节的笔记。


1、开始学一门新语言,尽量做笔记,把想弄明白的知识点和疑问点记下来。

2、欲望和好奇,是激发主动学习,尽快掌握知识的有效途径。平铺直叙的去看一本书,看着看着在哪里卡壳了,看不进了,就容易放弃。所以看书,不一定要从头到尾,重点是弄明白你想知道的东西,心里要清楚,然后去查找资料。解决的问题点多了,慢慢积累,也就会了。

3、教程重点是提供一些知识点,自己主动到网上找资料,看大家的说法,自己从收集、选择、领悟到贯通,从不知道到知道,这就是主动,可能这也是乐趣的所在。

4、程序语言是一门方法,方法有自己的规则,有规则就有自己的定义,有定义就要明白它的概念。我们从概念入手,在本教程并没有很多程序例子,一开始既要学习内容,又要搞明白例子,这样太累,我们尽量做到看看就可以了,要动手的话,在python软件里写写一些运算符,函数表达式,或者其它什么的好了。以后,程序例子一定要自己动手写的,学了本教程之后吧,可能会花几倍的时间在写上。

5、希望是多快好省的先去入门。


1python起步

1、python能做什么

服务器端编程,开发网站。系统网络运维,管理、监控、发布系统。ƒ科学与数字计算,图像可视化、生命科学、金融量化分析。3D游戏开发。图形界面开发,编写桌面用户界面。网络编程,网络技术开发。其它等。

看看python是不是很好用呢,心里对应一下,自己学python要做什么。

2、安装python,到官网:https://www.python.org/downloads/  上下载,有不同的版本,怎么安装,花点时间,自己网上搜索怎么安装,主动去找。

3装好python之后,网上查一下IDE ,什么是IDE,就是集成开发编辑器,目的就是为了更好更方便的写python程序,可以下载像pycharmsublime text等。


章2:python对象

现在要开始学习python了,我们想什么东西是和python直接相关的呢,学习python从什么开始呢。语言python是一种方法,也是一种工具,那么这个工具是和什么东西打交道的。什么东西让python有用武之地的,看看我们的键盘,有数字,有字母,有符号,python处理的就是这些东西,这里我们引入了对象。

1、python对象

Python要处理的对象有:数字,字符串,列表,元组,字典,集合,文件,函数,方法,类,模块。

数字:很明显,像 13.5-0.5

字符串:用引号表示,’123’ ,  ’rfv’,  ’myname888’ 

列表:用[  ]表示,[1 , 3 , a , ‘wsx’]

元组:用( )表示,(1 , 3 , a , ‘wsx’)

字典:用{  }表示,{‘name’ : ‘peter’ , ‘score’ 98’sex’ : ‘male’} 里面有key值,value值,一一对应。

集合:用[  ]表示,但里面只有key值,没有value值。

文件:既是存储在磁盘等地方的数据对象,可以理解为连续的字节序列。

★函数:pyhon里自带的像cos(), tan()等, 还有用def 语句定义的一段,作为自定义函数。

★方法即对象自身所带的内在一种处理方式,类似于属性。

★类:面向对象编程的重要概念,用class 语句定义一段,作为类。

模块:把相类似,相同的功能的函数放在一起,就是一个模块,上一节中讲python可以做很多事情,不同的事情,就调用不同的模块。比如做网站开发,和做数据分析,就调用不同模块了。

2Python对象分类

按不同原理分,有数据类型、存储模型、更新模型、访问模型。

自己网上理解 (数字,字符串,列表,元组,字典,集合 )各自如何对应的。

3Python对象的操作

有了对象,那我们就要对它们进行处理,那如何处理的呢,每种对象都有如下几种操作方式,①用操作符,②用操作函数,python自带的函数或自定义函数,③用内建方法,④用内建属性,在以后章节里针对不同对象,会详细分析。

比如1

>>> 5 + 3  ,其中就是操作符,

比如2

List = [1 , 3 , a , ‘wsx’]

Del  list[]

List.remove()

用这两个操作手法,都可以把list中的元素删除,就像一个人感冒了,一种是外部用药把它治好,一种是自身参加锻炼使它变好,两种一个用操作函数,一个是用内建的方法。注意书写格式就不一样了哦。


章3:python数字

Python的第一个操作对象就是数字。

数字是具有标量存贮,直接访问,不可更改特点的类型。

1、数字的分类:整型,长整型,布尔型,浮点型,复数。

整型:32-5,等很明白。

长整型:一串数字后加一个大写的L表示,999999999999L

布尔型:就是两个值,TrueFasle

浮点型:0.33,  0.0, -8.7 

复数:1.33+2.3j,具有虚部和实部的数。

2、对数字的操作

①操作符:, ,还有位运算符,对于这些操作符网上查资料自己熟悉,可以在python软件里,简单的用这些符号运算,增加影响。

②操作函数:是python软件内部已经定义好的函数,也叫内建函数。在网上自己找能够处理数字的内建函数有哪些,增加印象,并知道这个函数功能。下面举一些例子:

密指数运算,23次方,用操作符**表示,2**3, 用内建函数表示pow(2,3)

还有取绝对值函数abs() , 取余运算divod(), 类型转换函数hex(),chr(),ord()等等。

自己去查这些函数,并且知道不同的函数括号()里面需要填什么内容,这个都有规定。

③用内建方法:有些数字可以用内建方法对它进行处理,比如复数。

举例:aComplex = -8.3-1.47j ,那么我们要知道这个复数的实部,虚部是多少,而且要知道它的共轭复数是多少。就用内建方法: aComplex.real  回车得到-8.3 aComplex.imag  回车得到-1.47 ,求共轭用 aComplex.conjungate()  回车得到-8.3+1.47j

有什么相关的内建方法,自己网上查询,增加印象。

3、内建方法和属性

★以后在python的程序中经常看到xxx.xxx, 这样的格式,这种表达就叫属性或者内建方法,object.attribute ,前面object是对象,后边attribute是属性或方法。比如一个人有眼睛,而且会跑步,那么眼睛和跑步就是这个人的属性或方法。可以表示为man.eye  , man.run()  

属性和方法的概念和运用非常重要,查相关的资料自己先熟悉起来。

4、__xxx__

以后在程序中,又会看到很多这样的格式  _xxx  ,  __xxx  ,  __xxx__  ,  __xxx__() ,会觉得比较难理解,他们代表什么意思呢,他们可表示变量和函数,只是代表了不同含义的变量和函数,留一个题目,仔细查查这种表达式的各种说法。可能需要好几天的时间去消化的。


章4:python序列

序列定义:它们的成员是有序排列的,并且可以通过下标访问一个或几个成员,这种类型统称序列。

序列包含:字符串、列表、元组。

序列里各个成员的访问方式:①指定下标或偏移量访问每个成员,②利用切片访问多个成员。

比如:str = ‘wefgaggh’  我们得到,用str[2] 。要得到efga, str[1:4]  为什么这么用,网上查找序列下标和切片的相关内容,加深印象。

 1、字符串,是一种不可变类型,也就是说改变字符串里的某一个元素,就要新建立一个新的字符串。Python里没有字符这种类型,可以把字符看成是字符串的特殊形式。

 ①操作符:连接符(+) ,比较符 (<  ,  > , !=)  等,还有上面提到的切片操作符,成员操作符(in ,not in),字符串格式化操作符(%),

 ②操作函数:对字符串可操作的函数有很多,cmp() , len() , str() , unicode(), 还有很多其它的,自己找出来理解。

 ③用内建方法:举几个例子,更多的可以查找。

 ④unicode字符串:什么是unicode , 什么是ASCIIUnicode码值是ASCII码值的升级。

2、列表,是能存贮任意数目的,各种python对象的,灵活容易,是一种可变类型。

①操作符:连接符(+) ,比较符 (< , > , !=)  等,还有切片操作符,成员操作符(in ,not in),列表解析。重点理解什么是列表解析。

②操作函数:对列表的操作函数有,cmp() , len() , sorted(), reversed(), sum(),还有其它,找出来理解。

③用内建方法:举几个例子。

④用列表构建其它数据结构:利用列表的容器和可变性特点,构建堆栈和队列。什么是堆栈,什么是队列。

3、元组,是里面内容不可变,的一种容器。

①操作符:连接符(+) ,比较符 (< , > , !=)  等,还有切片操作符,成员操作符(in ,not in)。

②操作函数:对元组的操作函数有,cmp() , len() , max(), min(), 等等。

③用内建方法:由于其不可变类型,相似于字符串。

4、深拷贝和浅拷贝:拷贝python对象时,拷贝整个对象叫深拷贝,不拷贝对象,只拷贝这个对象的应用,叫浅拷贝。浅拷贝copy() ,深拷贝deepcopy()


章5:python字典和集合

1、字典是python语言中唯一的映射类型,里面包含键(key)和值(value),映射类型里哈希值(键)和指向的对象(值)是一一对应的关系。什么是哈希表,哈希表与字典的关系。

字典里的key必须是可哈希的。

①操作符:比较符 (< , > , and)等;键查找操作符d[key],对key所对应的value操作;成员操作符(in ,not in)。

②操作函数:对字典的操作函数有,cmp() , len() , dict(), hash(), 等等。

③用内建方法:举一些例子。

2、集合,是一组无序排列可哈希的值,里面没有相同的元素。集合的成员可作为字典的键,集合有可变和不可变之分。

①操作符:比较符 (< , > , == < , &)等成员操作符(in ,not in)等,

②操作函数:对集合的操作函数有,set() , len() , frozenset(), 等等。

③用内建方法


 6python文件和输入输出

 1、文件,不仅可以访问普通的磁盘文件,也可以访问其它任何类型抽象层面的‘文件’,一旦设置好合适的‘接口’,你就可以访问文件类型的对象,就好像访问普通文件一样。

文件,是连续的字节序列,数据传输就是用字节流,无论字节流是由单个字节还是大块字节组成。

 操作函数,open()函数是打开文件之门的‘钥匙’,打开文件后返回是一个文件对象,为后面提供输入/输出(I/O)操作的接口。

Open()基本语法: file_object = open(file_name , access_mode=’r’ , buffering= -1 ), 打开模式有’r’ ‘w’ ’a’ 

 文件打开之后,有4类方法可以对文件操作:输入、输出、文件内移动、及杂项操作。

①输入 f.read()   f.readline()   f.readlines()

②输出 f.write()   f.writelines()

③移动 f.seek()

④其它 f.close()

 2、文件系统模块,对文件系统的访问是大多通过pythonos模块实现,是python访问操作系统的功能的主要接口。

 3、其它和文件、输入输出有关的模块。


7python函数和函数式编程

1、函数,是对程序逻辑进行结构化或过程化的一种方法,能将整块代码巧妙的整合成易于管理的小块。

2、函数的调用,函数调用后会返回3种类型,①不显示返回任何东西,没有返回值,返回类型用none表示,②大多数函数会返回一个值或者对象,即object, ③有些会返回多个值或对象,但python把它们聚集起来,以一个元组的形式返回,也算是返回单个对象,tuple

3、函数的参数,有①位置参数(必选参数)  ②默认参数  ③可变长度参数组,又分为非关键字参数组(元组)和关键字参数组(字典)。

4、函数的属性,是python另外一个使用了句点属性标识的,并拥有名字空间的领域。

比如:def bar(): pass   #定义函数

      Bar.__doc__     #函数一个属性

5、内嵌函数,在一个函数体内创建另一个函数。最直接的方法,就是在外部函数定义体内,定义内部函数;还有一种方式就是使用lambda语句。如果定义内部函数时,包含外部函数对象的引用,甚至这个对象可以在外部函数之外,那这个函数就被叫闭包。

6、函数装饰器,主要思路源自python面向对象编程。以@开头,接着是装饰器函数名称和参数,然后是被修饰的函数和参数。

   @deco2

   @deco1

   def fuc(arg1,arg2,...):pass

等价于:

   def fuc(arg1,arg2,...):pass

   fuc=deco2(deco1(fuc))

 装饰器可分为有参装饰器和无参装饰器。上面的为无参装饰器,下面为有参。

   @deco2(deco_arg)

   @deco1

   def fuc(arg1,arg2,...):pass

等价于:

   def fuc(arg1,arg2,...):pass

   fuc=deco2(deco_arg)(deco1(fuc))

 7、函数可以怎么用,①函数可以被访问的,②函数可以像赋值语句一样,赋值给其它变量,③把函数作为参数传递给其它参数,④可以作为列表、字典容器的其中元素。

   函数有一个独一无二的特征,区别于其它对象,就是函数是可调用。

 8、python不是一种函数式编程语言,但它支持很多有价值的函数式编程构架。Python提供4种内建函数和lambada语句来体现函数式编程。内建函数:apply() , filter() , map() , reduce() 。 Lambada表达式。

 偏函数:当函数的个数太多,需要简化时,创建一个新函数(偏函数),这个新函数可以固定原来函数的部分参数,也就是设置成默认参数,这样起到更简单的调用。

 9、函数变量的作用域,全局域与局部域,对应变量为全局变量和局部变量。闭包的作用域。

其它函数比较特殊的函数,递归函数、生成器等。


章8python模块

1、模块,是存贮一些有组织的代码段,代码段可能是一些拥有数据成员、方法等内容的类。也有可能是一些操作函数,把其它模块的特性引入到你模块中的操作叫导入。

2、名称空间,每个对象都有一个名称,模块有名称、函数有名称、类也有名称,这些名称的集合叫名称空间,名称空间和存在的对象有一一对应的映射关系。可以向名称空间,添加名称,将绑定的标识符(名称)指向这个对象。名称空间有:局部名称空间,全局名称空间,内建名称空间。

3、名称空间与变量作用域的关系。名称空间纯粹意义上是指,名字和对象之间的映射关系。作用域是指用户的代码在哪些物理位置可以访问到这些名字,而在另外一些地方可能就访问不到这个名字。在将来遇见名称空间时想想“它存在吗”,遇到作用域的时候想想“能看见(访问)到它吗”。

4、模块的导入

①Import 模块名  如: import moudle

②import 模块名 as 模块名简称  如:import moudle as md

③from 模块名 import 指定某个属性 如:from moudle import name

5、模块的内建函数有__import__() globals() locals()reload() ,

6、包,是一个有层次的文件目录结构,定义了一个由模块和子包组成的python应用程序执行环境。与类和模块相同,用句点属性来访问包中的元素。


章9python类

类,是面向对象编程的一个重要思想,面向对象编程两个主题:类和类实例。

1、与类相关的其它模块及文档

Userlist:对列表进行封装,类定义的一个模块。

Userdic:对字典进行封装,类定义的一个模块。

Userstring:对字符串进行封装,类定义的一个模块。

typespython对象所有类型在解释器中的名字,一个封装模块。

Operator:标准操作符的函数接口模块,比具体操作符更通用。

这些模块主要用处是提供给用户所需要的功能,不必自己动手去实现它们,可以作为基类,提供子类化和进一步定制的功能。

其它文档可以参考python其它手册。

2、元类,是类中最难理解的概念。元类创造了类,类创造了实例。元类    类    实例。

程序员在编程时,只需创建类,而无需创建或使用元类,您在创建类时,仅仅是运用了元类所提供的创建类的默认模版方式。创建一种风格的类,就是运用了系统自己提供的一种元类的默认方式。所以元类的话题,仅仅是面向对象理论化或思想上的范畴。

在执行类定义时,元类通常会传递三个参数到构造器:类名、从基类继承数据的元组、类的属性字典。

3、新式类和经典类。

Python2.x以前版本默认的都是经典类,只有显式继承了object才是新式类。

Python3.x 以后版本都是新式类,无需显式继承object

新式类的算法按C3算法(类似广度优先算法),经典类的算法按照深度优先。

新式类有相同的父类只执行一次构造函数,经典类会重复执行。

新式类新增__slot__内置属性,__getattribute__()方法,以及相关的描述符__get__(),__set__(),__delete__().

属性和property()内建函数的关系。

4、类如何创建,创建时需要用到的一些方法(类构造器)。

   1)基本构造器__init__() , __new__() , __del__() , 等等。

   2)对象比较器__cmp__() , __lt__() , __gt__(),等等。

   3)属性操作器__getattr__() , __setattr__() , __delattr__() , 以及上面提到的操作符,等等。

   4)数值类型操作器 __*add__(), __*sub__() , __*and__() , __*or__() , __invert__() , __complex__() ,

      __hex__() , index__() , 等等。

   5)序列类型操作器 __len__() , __getitem__() , __getslice__() , __iter__() , 等等。

   6)映射类型构造器 __hash__() , __getitem__() , __missing__(), 等等。

5、类、类实例、以及其它对象的操作函数。

   Issubclass() , isinstance() , hasattr() , getattr() , setattr() , delattr() , dir() , super() , vars() ,等等。

6、子类的继承和派生

7、静态方法和类方法

8、方法的调用

★9、相关概念:类、类实例、类的属性、类实例属性。

猜你喜欢

转载自blog.csdn.net/A1_abc/article/details/80497764