您的当前位置:首页正文

python核心编程笔记

来源:画鸵萌宠网


1.26.2015

1 对于python文件.py ,如果你直接双击它会启动DOS命令行,但是一般是一闪而过的结果,对于这种情况,你可以在末尾写上raw_input() 使得命令行停留直到你输入为止。Python没有大括号,而是使用不同缩进区分不同代码块。

2 元素列表集合以及字典都可以存储任何互不相同的数据。访问字典的键值如dict.keys()。

3 for 循环和range 或者xrange 一起使用用于计数

4 python 的灵活如一次性输出多个变量值以及一次性赋值多个值

5 range函数经常和len函数一起使用进行字符串索引。比如知道某个字符串里的每个字符的对应索引:

6 函数enumerate 解决了在循环里要么仅仅是循环索引值要么仅仅循环元素值的缺点:

实际上,返回的形式为两个值,第一个是索引值,

第二个是元素值。

7 列表解析,如:

8 文件操作:

其中r 表示读取文件,w 表示写入文件,a 表示添加。其他的如 b 表示是二进制访问文件。如果未指定那么默认是r 。打开后,返回一个文件句柄也就是认为的地址吧。通过访问文件对象调用文件的方法如readlines 等。

当然,这样的格式就是指默认和python

文件是在一个目录下的。记住open 后必须wenjian.close()

9 在输出时候,一个有有意思的技巧就是使用逗号,抑制自动生成的换行符号。因为每次print后都会自动生成一个换行符。

10 使用函数file () 等价于open ,但是前提都是文件要首先存在。

11 捕捉错误和异常,函数try – except:

12 定义函数时候,默认参数问题:

表示参数为

debug 但是在定义参数时候给赋初值了,如果调用函数时候没有初始化函数参数那么就使用默认的参数值为true ,反之就使用你自定义的参数值。

13 关于定义类对象,格式为class ClassName (父类名称): 可以在括号里提供一个父类名称表示继承关系,如果没有的话那么就是使用object 作为父类继承。在类里面定义函数的时候,作为参数始终要有self :

作用就等价于this。

每个类都有一个默认函数__init__() 作用初始化实例对象。用户可以重新定义这个函数。

14

self.__class__ 等价于实例化它的类的名字,就是类名本身。

说明下,

15 模块是一个独立文件,组合了各种函数类等。模块是不带后缀.py的文件。使用sys模

write()

函数不会再字符串后自动

换行。

16 使用反斜杠继续代码:

1.27.2015

1 python允许链式赋值形式,

2

3 python 支持多元赋值,

建议是这样写的,代码更具可读性。

4 灵活的交换两个数,

5 属性__doc__ 可以查看文档字符串,对于方式为a.__doc__ ,其中a 是对象,类或模块或函数等:

>>> str.__doc__

\"str(object='') -> string\\n\\nReturn a nice string representation of the object.\\nIf the argument is a string, the return value is the same object.\"

>>> def func():

'this is a string'

>>> func.__doc__

'this is a string'

1.28.2015

1 一个典型的python文档如图:

2 关于如何判断一个模块是被导入还是被执行,使用变量__name__ :

3 python 使用引用计数来记录内存里所有对象,当这个对象一被创建就创建了一个引用计数,如果这个对象不被需要时候则引用计数为0 就很可能被回收。

考虑一个对象的引用计数增加的情况:

考虑一个对象的引用计数减少的情况:

当对象销毁:

当变量被赋值给另一个对象,原来对象的引用就会减

4 介绍两个脚本代码1:

这段代码的作用是将你输入的内容写入到文件里。

1。

反之,读取文件的内容到屏幕上:

同时,try: except IOError ,e : else: 如果有异常的话,抛出异常。

1.29.2015

1 代码对象:

2 异常:

3 python的扩展切片语法,多维切片和步进切片和省略切片:

多维切片,认为是按照最短切片输出:

4 xrange函数:——类似range但是针对大数据集合。

5 python 里判断两个对象是否是共享一个地址,即是否共享一个内存空间,使用函数is或is not :

操作符is 等价于 id 符号。

6 整型对象和字符串对象都是不可变的对象,而浮点类型等是可变的:

发现整型对象时候,登记于 b = a 共享一个地址。 按照文章的意思,python是为了使得运算更加高效,因此才缓存这些小整数的,python认为这些小整数是经常被用到的。因为对不经常用到的大整数的内存地址就不一样。

记住,python的高效缓存地址,出现这样情况的小整数范围为整数范围在300以内,这个是我测出的2.7.8版本的结果。

7 布尔类型是and or not ,三个。其中not 是三个中最高的。只比所有比较运算符低。

8 几个标准的内建函数:

函数cmp() 同样可以用于比较字符和数字等。

很多情况下,str() repr ‘’ 这三个的输出结果是一样的。 确认一个对象的类型使用函数type ,因为python不支持重载,因此当你需要确认你调用的是你需要的函数或对象的时候,可以使用这个函数。 同样可以使用函数isinstance() :

从这个例子看出,函数是将两个参数进行比较,看是否是相同类型的。

9 存储模型:

更新模型:

三种访问模型:

直接访问,顺序访问和映射访问。直接方法就是所有的数字类型,不是指容器类型。顺序访问包括字符串,列表和元组。映射访问是指键值对,如字典。

10

1.30.2015

1 产生一个复数,调用实数部分和虚数部分用属性real和imag

2

3 注意点:真正的除法通过引入 from __future__ import division

4

这个例子说明,地板除法floor 的作用等价于//

5 关于位操作符的说明见书本p110

6 举例一些类型转换函数,(函数complex作用是将数值转换为复数类型,需要有两个参数)

7 python的内建函数,用于数值运算:

其中,我认为常用就是abs,pow,round 对于其他几个认为不是经常使用的函数。 函数round 是四舍五入的作用,可以有两个参数 round(number,m) ,其中m 是你指定的四舍五入的小数位数。

8 内建函数 oct() 和 hex()是将任意进制的参数转换为相应的八进制和十六进制。 Ord() 得到参数对应的ascii 码。 下面的函数都是适用于整数参数。

9 核心模块random :

10 字符串的合并以及列表的合并:

函数extend() 格式。

11 有步长的切片操作,使用3个参数,第三个参数指定步长。

12 看下面的几个例子:关于range的步长以及逆序步长的情况。

如果改为for I in [None] + range(-1,-len(s),-1) 那么结果大不一样。P129

1.31.2015

1 类型转换函数 list , str, tuple() 函数。 关于浅拷贝和深拷贝首先见P130。

2 函数zip :

3 字符串是不允许改变的序列,就是说不允许仅改变部分子串。但可以通过切片和加号拼凑成一个新串。或索性整个重新赋值。

。同样的,如

果你真需要仅仅删除某个字符或部分字符,那么结合切片操作和加号也可以做到:

通过使用赋值为一个空字符或者使用函数del astring

4 编写一个能检查是否是合法标识符的小脚本程序:

5 join() 方法:看看这个方法的正确使用方法

注意:这个方法只是接受一个参数,那么如果将多个参数连接起来,那么就需要使用元组符号。其次,认为a.join(b) 这样使用是得不到想要的结果的。

5 程序员更习惯写成 效果等价于加号+

6

2.5.2015

1 函数chr 和 ord ,chr(number)表示将参数数字转换为对应的字符;函数ord() 将字符参数转换为对应的数字。

2 字符串的内建方法很多,详见p145 。对于

string.find(‘str’,begin=,end=len(s1)), 如find(‘or’,22)表示寻找的子串or, 同时起始位置是22,并且函数默认end参数值字符串长度。 函数split() 如果没有参数则默认是以空格作为分隔符。

2.6.2015

1 三引号,典型应用就是一段HTML或者SQL代码。

2

3 使用Unicode的规则:

尤其是第四个规矩,函数encode和decode,用在将数据写入文件数据库等时候。

有关python的Unicode 讲解p150左右没怎么看!!!

4 关于python的re 模块:

注意python的字符串并不是以NUL或者\\0结尾的。

5 列表操作的append,remove 函数,参数都是要除去的元素内容。列表函数sorted 和reserved 以及删除整个列表函数如del alist。

一般比较列表a 和列表b 也是使用函数cmp()

如果想将切片操作的结果赋值给变量,那么也要确保等号左边也是一个(空)列表变量,这样才能接受并返回切片操作的结果。

成员操作 in 和 not in 。

连接操作符 += 等价于函数extend ,一般也建议使用这个函数如,a.extend(b) ,将b列表添加到列表a 中。 这个函数是在原有列表的基础上改变,而使用+ 则是新建了一个列表。

而且注意,使用+ 还是有很多限制的,将列表类型和字符串类型进行相加是不允许的。但使用函数append则不存在这个问题。

注意函数title 前面讲过是将字符串的首字母大写操作。

列表生成函数list() 以及 元组生成函数 tuple()

6 列表的内建函数:

说明下,如果直接使用函数index()得到某个元素的下标,如果这个元素不存在那么将报错。正确保险做法是首先使用函数in 或 not in 来判断这个元素是否存在,然后在使用这个函数得到下标:(避免错误)

7

比如列表的函数 sort ,extend ,reserve 是没有返回值的。而reserved 和 sorted 函数则是有返回值的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top