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 函数则是有返回值的。
因篇幅问题不能全部显示,请点此查看更多更全内容