python学习笔记:(一)

来源:互联网 发布:oracle minus 优化 编辑:程序博客网 时间:2024/04/30 02:44

《Dive into Python》

1、属性__name__

模块是对象,并且所有的模块都有一个内置属性__name__。

一个模块的__name__的值取决于如何应用模块。

如果import模块,那么__name__的值通常为模块的文件名,不带路径或者文件扩展名。

但是你也可以像一个标准的程序一样直接运行模块,在这种情况下__name__的值将是一个特别的缺省值:__main__

>>>import os

>>>os.__name__

'os'

只要了解到这一点,你就可以在模块内部为你的模块设计一个测试套件,在其中加入这个if语句。当你直接运行模块__name__的值是__main__,所以测试套件执行。当你导入模块__name__的值就是别的东西了,所以测试被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。

2、内置数据类型:

dictionary(字典)、tuple(元组)和list(列表)

2.0、dict每个元素都是一个key-value对;整个元素集合使用大括号

2.1、dict:在一个dict中不能有重复的key。给一个存在的key赋值会覆盖原有的值。.

2.2、dict是无序的

2.3、dict的key是大小写敏感的

2.4、使用d['key'] = 'value'

2.5、list的索引从list的尾部开始向前计数来存取元素。任何一个非空的list最后一个元素总是li[-1]

2.6、list从0开始,所以list[0:3]返回list的前3个元素,从list[0]开始,直到但不包括list[3]

2.7、list[:]返回list所有元素,list[:n]返回前n个元素

2.8、append向list的末尾追加单个元素

2.9、insert将单个元素插到list中,另外,list中的元素不必唯一,可以重复。

2.10、extend用来连接list,请注意不要使用多个参数调用extend,要使用一个list参数进行调用,这个参数总是一个list,并且把这个list中的每个元素添加到原list中。

2.11、index在list中查找一个值的首次出现并返回索引值。

2.12、要测试一个值是否在list内,使用in. 存在返回True,否则返回False

2.13、remove从list中删除一个值的首次出现.(list中如果有重复的值,删除第一个)

2.14、pop比较有趣,它会做两件事:删除list最后一个元素,然后返回删除元素的值。

2.15、tuple是不可以改变的list。一旦创建了一个tuple,就不能以任何方式改变它,所以tuple没有方法。

2.16、!!!!tuple可以转换成list,反之亦然。内置的tuple函数接收一个list,并返回一个有这相同元素的tuple。而list函数接收一个tuple返回一个list。从效果上看,tuple冻结一个list,而list解冻一个tuple!!!!

2.17、链接list与分割字符串,熟悉函数:join()和split(),参考例子:

>>> list = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s = ';'.join(li)
>>> s
'server=mpilgrim;uid=sa;database=master;pwd=secret'
>>> s.split(';')
['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
>>> s.split(';',1)
['server=mpilgrim', 'uid=sa;database=master;pwd=secret']

2.18、Tip:用split搜索

anystring.split(delimiter, 1)是一个有用的技术,如果想要搜索一个子串,然后分别处理字符前半部分(即list中的第一个元素)和后半部分(即list中第二个元素)时,使用这个技术。


3.Python实现info函数(不错的的实现)

#!/usr/bin/python
# Filename : apihelper.py

def info(object, spacing=10, collapse=1):
'''print methods and doc strings,

Takes module, class, list, dictionary, or string,'''
methodList = [method for method in dir(object) if callable(getattr(object, method))]
processFunc=collapse and (lambda s:''.join(s.split())) or (lambda s:s)
print '\n'.join(["%s %s" % (method.ljust(spacing), processFunc(str(getattr(object,method).__doc__))) for method in methodList])

if __name__ == '__main__':
print info.__doc__

-------------------------------------------------------------------

使用方法:

$ python
Python 2.6.8 (unknown, Jun  9 2012, 11:30:32)
[GCC 4.5.3] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from apihelper import info
>>> list = []
>>> info(list)
__add__    x.__add__(y)<==>x+y

。。。。。。

append     L.append(object)--appendobjecttoend
count      L.count(value)->integer--returnnumberofoccurrencesofvalue
extend     L.extend(iterable)--extendlistbyappendingelementsfromtheiterable
index      L.index(value,[start,[stop]])->integer--returnfirstindexofvalue.RaisesValueErrorifthevalueisnotpresent.
insert     L.insert(index,object)--insertobjectbeforeindex
pop        L.pop([index])->item--removeandreturnitematindex(defaultlast).RaisesIndexErroriflistisemptyorindexisoutofrange.
remove     L.remove(value)--removefirstoccurrenceofvalue.RaisesValueErrorifthevalueisnotpresent.
reverse    L.reverse()--reverse*INPLACE*
sort       L.sort(cmp=None,key=None,reverse=False)--stablesort*INPLACE*;cmp(x,y)->-1,0,1


4、使用type、str、dir和其它内置函数

4.1、type函数返回任意对象的数据类型

4.2、str将数据强制转换为字符串。每种数据类型都可以强制转换为字符串。还可以作用于模块显示模块的整个路径。

str的一个细小但重要的行为是他可以作用于None,None是Python的null值。这个调用返回字符串‘None’

4.3、dir函数返回任意对象的属性和方法列表,包括模块对象、函数对象、字符串对象、列表对象、字典对象。。。相当多的东西。

4.4、用getattr 动态得到函数和其它属性的引用????????(这条属性有点不是很熟悉!!!!)



Python中的True:

0为False;其它所有皆为True

空串("")为False;其它所有字符串皆为True

空list([])为False;其它所有list皆为True

空tuple(())为False;其它所有tuple皆为True

空dict({})为False;其它所有dict皆为True




原创粉丝点击