python目录中有两个关键性的目录:lib和Script
lib:包含了python的内置模块;当下载的第三方模块则在lib\site-packages内;
Script:包含了脚本exe文件;etc : pip.exe;easy_install.exe等;
python安装第三方模块的方式汇总:
一、方法1: 单文件模块
直接把文件拷贝到 $python_dir/Lib/site-packages/二、方法2: 多文件模块,带setup.py下载模块包,进行解压,进入模块文件夹,执行:python setup.py install
三、 方法3:easy_install 方式先下载ez_setup.py,运行python ez_setup 进行easy_install工具的安装,之后就可以使用easy_install进行安装package了。easy_install packageNameeasy_install package.egg
四、 方法4:pip 方式先进行pip工具的安裝:easy_install pip(pip 可以通过easy_install 安裝,而且也会装到 Scripts 文件夹下。) 安裝:pip install PackageName 更新:pip install -U PackageName 移除:pip uninstall PackageName 搜索:pip search PackageName 帮助:pip help
注:当前建议使用pip进行安装第三方模块
python的基本数据类型:
- 空(None) 表示该值是一个空对象,类似于java中的Null
- 布尔类型(Boolean) 在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了__nonzero__()或__len__()方法且方法返回0或False,则其实例也被当作False,其他对象均为True
- 整形(Int) 在Python内部对整数的处理分为普通整数和长整数,普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制 整形做取余和除算法的时候,按floor取值:
17/10 # 117/-10 # -2-17/10 # -217%10 # 717%-10 # -3-17% 10 # 3
- 浮点数(float) Python的浮点数就是数学中的小数,类似C语言中的double。之所以称之为浮点数,即是因为用科学计数法表示时,浮点数中的小数点是可以变动的;如:
1.2e8 <==> 0.12e9
注:在运算中,整数与浮点数运算的结果是浮点数 - 字符串(String)Python字符串即可以用单引号也可以用双引号括起来,甚至还可以用三引号括起来
'ab c' # 有四个字符:a、b、空格、c'i\'m ok' # \用来做转义字符r'\\\t\\\' # r表示''内部的字符串默认不转义
- 针对字符串的操作:
# 去空格及特殊符号# strip:在首尾部分去除指定的字符串;当没有指定字符时,去除首尾空格# lstrip: 去除左边的指定字符串# rstrip:去除右边的指定字符串theString = 'saaaay yes no yaaaass'print theString.strip('say') print theString.strip('say ') #say后面有空格 print theString.lstrip('say') print theString.rstrip('say') 结果:yes no es no yes no yaaaass saaaay yes no# 字符串包含 判断操作符:in,not in# string模块,还提供了很多方法,如S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1S.rfind(substring,[start [,end]]) #反向查找S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常S.rindex(substring,[start [,end]])#同上反向查找S.count(substring,[start [,end]]) #返回找到子串的个数S.lowercase()S.capitalize() #首字母大写S.lower() #转小写S.upper() #转大写S.swapcase() #大小写互换S.split(str, ' ') #将string转list,以空格切分S.join(list, ' ') #将list转string,以空格连接处理字符串的内置函数len(str) #串长度cmp("my friend", str) #字符串比较。第一个大,返回1max('abcxyz') #寻找字符串中最大的字符min('abcxyz') #寻找字符串中最小的字符string的转换 oat(str) #变成浮点数,float("1e-1") 结果为0.1int(str) #变成整型, int("12") 结果为12int(str,base) #变成base进制整型数,int("11",2) 结果为2long(str) #变成长整型,long(str,base) #变成base进制长整型,
- 列表(List)用符号[]表示列表,中间的元素可以是任何类型,用逗号分隔。list类似C语言中的数组,用于顺序存储结构;list取元素可以顺序也可以倒序取;如:
-
list = ['a', 'b', 'c']print list[2] # 取list中的最后一个元素,len(list)-1即是list最后一个元素的位置print list[-1] # 倒数第一个元素print len(list) # 获得list中元素的个数#--------list是可变的有序表,所以可以动态的增删改查list中的元素list.append('d') # 默认追加到尾元素 a,b,c,dlist.insert(0, 'd') # 指定索引添加元素 d,a,b,c在列表中插入一个值sample_list[0:0] = ['sample value']list.pop(...) # pop不带参数默认删除尾元素,参数指定list元素索引,#返回最后一个元素,并从list中删除list.remove(var) #删除第一次出现的该元素L.count(var) #该元素在列表中出现的个数L.index(var) #该元素的位置,无则抛异常 L.extend(list) #追加list,即合并list到L上L.sort() #排序L.reverse() #倒序[1,2]+[3,4] #为[1,2,3,4]。同extend()[2]*4 #为[2,2,2,2]del L[1] #删除指定下标的元素L1 = L[:] #L1为L的克隆,即另一个拷贝。用in语法判断list是否包含该元素print 1 in listlist[0] = 'e' # 直接替代元素 e,b,c # list中的数据类型可以不一致,类似java中的数组,list中可以包含list
- 元祖(tuple)元组是和列表相似的数据结构,但它一旦初始化就不能更改,速度比list快,同时tuple不提供动态内存管理的功能,需理解一下规则:tuple可以用下标返回一个元素或子tuple表示只含有一个元素的tuple的方法是:(d,)后面有个逗号,用来和单独的变量相区分
tuple = (1, 'a', ['x', 'b'])print tuple # 1, 'a', ['x', 'b']tuple[2][0] = 'y'tuple[2][1] = 'c'print tuple # (1, 'a', ['y', 'c']) # 发现tuple中元素有变,其实tuple指定的list内存地址是没有变化的,变化的是list中的元素
- 集合(Set)集合是无序的,不重复的元素集,类似数学中的集合,可进行逻辑运算和算术运算
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])>>> s set([1, 2, 3])
注意,传入的参数[1, 2, 3]是一个list,而显示的set([1, 2, 3])只是告诉你这个set内部有1,2,3这3个元素,显示的[]不表示这是一个list。可以通过add,remove添加和删除元素set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错 - 字典(dict)字典是一种无序存储结构,包括关键字(key)和关键字对应的值(value)。字典的格式为:dictionary = {key:value}。关键字为不可变类型,如字符串、整数、只包含不可变对象的元组,列表等不可作为关键字。如果列表中存在关键字对,可以用dict()直接构造字典 dict中的元素可以动态通过key增加,由于一个key只能对应一个value;当后key相同时,后面的value会将前面的值进行重置;
dict = {'java': 'diffcult', 'python':'middle'}print dict['java'] # diffcultprint dict.get('java') # diffcultdict.pop('java')print dict # {'python': 'middle'}
dict定义的方式和特性:info = dict(name = 'old') # {'name':'cold'} # 更优雅info = {'name': 'old'} # {'name':'cold'} key = 'name'info = {key: 'old'} # {'name':'cold'}info = dict(key='old') # {'key':'cold'}#Python字典还有一种初始化方式,就是使用字典的fromkeys方法可以从列表中获取元素作为#键并用None或fromkeys方法的第二个参数初始化info = {}.fromkeys(['name', 'blog']) # {'blog': None, 'name': None}info = dict().fromkeys(['name', 'blog']) # {'blog': None, 'name': None}info = dict().fromkeys(['name', 'blog'], 'linuxzen.com') # {'blog': 'linuxzen.com', 'name': 'linuxzen.com'}# 但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典info.get(key) # None#我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,#当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅info.get(key, default) # default# 同时Python字典的update方法也可以更新和添加字典info = dict(name='cold', blog='linuxzen.com')info.update({'name':'cold night', 'blogname':'linuxzen'})info.update(name='cold', blog='www.linuxzen.com') # 更优雅结果:{'blog': 'www.linuxzen.com', 'name': 'cold', 'blogname': 'linuxzen'}# 字典删除del info['name']info.pop('name')# 字典查找info.has_key(key) #有该键返回TRUE,否则FALSEinfo..clear() #清空字典,同del dict info.copy() #拷贝字典info.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小) #第一个大返回1,小返回-1,一样返回0
- 查找和速度极快,不会随着key的增加而增加
- 需要占用大量的内存,内存浪费多 而list相反:
- 查找和插入的时间随着元素的增加而增加
- 占用空间小,浪费内存很少 python有内置模块types:
NoneType = type(None)TypeType = typeObjectType = objectIntType = intLongType = longFloatType = floatBooleanType = boolStringType = strBufferType = bufferTupleType = tupleListType = listDictType = DictionaryType = dictClassType = type(_C)InstanceType = type(_x)FileType = file
- 常见的函数:
- range(5) : 生成大于等于0,小于5的整形;
- raw_input() :读取的内容永远以字符串显示返回
- abs() : 取绝对值,只能传一个参数,且参数类型是整形或浮点型
- cmp(x,x): 比较函数,需要两个参数
- int(),float(),str(),unicode(),bool(): 数据类型转换
- isinstance(x,int): 数据类型进行检查,判断该数据是否为某种类型
- 函数中的return返回的是tuple类型
- capitalize() : str对象的方法,将字符串首字母大写,其它为小写的方法
- type(): 判断对象类型
- dict(): 如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list
- len():获取一个对象的长度