pip工具常用命令:
pip命令示例 |
说明 |
pip download SomePackage[==version] |
下载扩展库的指定版本,不安装 |
pip freeze [> requirements.txt] |
以requirements的格式列出已安装模块 |
pip list |
列出当前已安装的所有模块 |
pip install SomePackage[==version] |
在线安装SomePackage模块的指定版本 |
pip install SomePackage.whl |
通过whl文件离线安装扩展库 |
pip install package1 package2 ... |
依次(在线)安装package1、package2等扩展模块 |
pip install -r requirements.txt |
安装requirements.txt文件中指定的扩展库 |
pip install --upgrade SomePackage |
升级SomePackage模块 |
pip uninstall SomePackage[==version] |
卸载SomePackage模块的指定版本 |
对象是python语言中最基本的概念,在python中处理的一切都是对象。
Python的对象模型
对象类型 |
类型名称 |
示例 |
简要说明 |
数字 |
int, float, complex |
1234, 3.14, 1.3e5, 3+4j |
数字大小没有限制,内置支持复数及其运算 |
字符串 |
str |
'swfu', "I'm student", '''Python ''', r'abc', R'bcd' |
使用单引号、双引号、三引号作为定界符,以字母r或R引导的表示原始字符串 |
字节串 |
bytes |
b’hello world’ |
以字母b引导,可以使用单引号、双引号、三引号作为定界符 |
列表 |
list |
[1, 2, 3],['a', 'b', ['c', 2]] |
所有元素放在一对方括号中,元素之间使用逗号分隔,其中的元素可以是任意类型 |
字典 |
dict |
{1:'food' ,2:'taste', 3:'import'} |
所有元素放在一对大括号中,元素之间使用逗号分隔,元素形式为“键:值” |
元组 |
tuple |
(2, -5, 6), (3,) |
所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素的话,后面的逗号不能省略 |
集合 |
set frozenset |
{'a', 'b', 'c'} |
所有元素放在一对大括号中,元素之间使用逗号分隔,元素不允许重复;另外,set是可变的,而frozenset是不可变的 |
布尔型 |
bool |
True, False |
逻辑值,关系运算符、成员测试运算符、同一性测试运算符组成的表达式的值一般为True或False |
空类型 |
NoneType |
None |
空值 |
异常 |
Exception、ValueError、TypeError |
|
Python内置大量异常类,分别对应不同类型的异常 |
文件 |
|
f =open('data.dat', 'rb') |
open是Python内置函数,使用指定的模式打开文件,返回文件对象 |
其他迭代对象 |
|
生成器对象、range对象、zip对象、enumerate对象、map对象、filter对象等等 |
具有惰性求值的特点 |
编程单元 |
|
函数(使用def定义)、类(使用class定义)、模块(类型为module) |
类和函数都属于可调用对象,模块用来集中存放函数、类、常量或其他对象 |
在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。这一点适用于Python任意类型的对象。
Python属于强类型编程语言,Python解释器会根据赋值或运算来自动推断变量类型。Python还是一种动态类型语言,变量的类型也是可以随时变化的。
>>> x = 3 >>> print(type(x)) <class 'int'> >>> x = 'Hello world.' >>> print(type(x)) #查看变量类型 <class 'str'> >>> x = [1,2,3] >>> print(type(x)) <class 'list'> >>> isinstance(3, int) #测试对象是否是某个类型的实例 True >>> isinstance('Hello world', str) True
Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一块内存地址。
>>> x = 3 >>> id(x) 10417624 >>> y = 3 >>> id(y) 10417624
Python具有自动内存管理功能,对于没有任何变量指向的值,Python自动将其删除。Python会跟踪所有的值,并自动删除不再有变量指向的值。
常用内置函数
函数 |
功能简要说明 |
abs(x) |
返回数字x的绝对值或复数x的模 |
all(iterable) |
如果对于可迭代对象中所有元素x都等价于True,也就是对于所有元素x都有bool(x)等于True,则返回True。对于空的可迭代对象也返回True |
any(iterable) |
只要可迭代对象iterable中存在元素x使得bool(x)为True,则返回True。对于空的可迭代对象,返回False |
ascii(obj) |
把对象转换为ASCII码表示形式,必要的时候使用转义字符来表示特定的字符 |
bin(x) |
把整数x转换为二进制串表示形式 |
bool(x) |
返回与x等价的布尔值True或False |
bytes(x) |
生成字节串,或把指定对象x转换为字节串表示形式 |
callable(obj) |
测试对象obj是否可调用。类和函数是可调用的,包含__call__()方法的类的对象也是可调用的 |
compile() |
用于把Python代码编译成可被exec()或eval()函数执行的代码对象 |
complex(real, [imag]) |
返回复数 |
chr(x) |
返回Unicode编码为x的字符 |
delattr(obj, name) |
删除属性,等价于del obj.name |
dir(obj) |
返回指定对象或模块obj的成员列表,如果不带参数则返回当前作用域内所有标识符 |
divmod(x, y) |
返回包含整商和余数的元组((x-x%y)/y, x%y) |
enumerate(iterable[, start]) |
返回包含元素形式为(0, iterable[0]), (1, iterable[1]), (2, iterable[2]), ...的迭代器对象 |
eval(s[, globals[, locals]]) |
计算并返回字符串s中表达式的值 |
exec(x) |
执行代码或代码对象x |
exit() |
退出当前解释器环境 |
filter(func, seq) |
返回filter对象,其中包含序列seq中使得单参数函数func返回值为True的那些元素,如果函数func为None则返回包含seq中等价于True的元素的filter对象 |
float(x) |
把整数或字符串x转换为浮点数并返回 |
frozenset([x])) |
创建不可变的字典对象 |
getattr(obj, name[, default]) |
获取对象中指定属性的值,等价于obj.name,如果不存在指定属性则返回default的值,如果要访问的属性不存在并且没有指定default则抛出异常 |
globals() |
返回包含当前作用域内全局变量及其值的字典 |
hasattr(obj, name) |
测试对象obj是否具有名为name的成员 |
hash(x) |
返回对象x的哈希值,如果x不可哈希则抛出异常 |
help(obj) |
返回对象obj的帮助信息 |
hex(x) |
把整数x转换为十六进制串 |
id(obj) |
返回对象obj的标识(内存地址) |
input([提示]) |
显示提示,接收键盘输入的内容,返回字符串 |
int(x[, d]) |
返回实数(float)、分数(Fraction)或高精度实数(Decimal)x的整数部分,或把d进制的字符串x转换为十进制并返回,d默认为十进制 |
isinstance(obj, class-or-type-or-tuple) |
测试对象obj是否属于指定类型(如果有多个类型的话需要放到元组中)的实例 |
iter(...) |
返回指定对象的可迭代对象 |
len(obj) |
返回对象obj包含的元素个数,适用于列表、元组、集合、字典、字符串以及range对象和其他可迭代对象 |
list([x])、set([x])、tuple([x])、dict([x]) |
把对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典 |
locals() |
返回包含当前作用域内局部变量及其值的字典 |
map(func, *iterables) |
返回包含若干函数值的map对象,函数func的参数分别来自于iterables指定的每个迭代对象, |
max(x)、 min(x) |
返回可迭代对象x中的最大值、最小值,要求x中的所有元素之间可比较大小,允许指定排序规则和x为空时返回的默认值 |
next(iterator[, default]) |
返回可迭代对象x中的下一个元素,允许指定迭代结束之后继续迭代时返回的默认值 |
oct(x) |
把整数x转换为八进制串 |
open(name[, mode]) |
以指定模式mode打开文件name并返回文件对象 |
ord(x) |
返回1个字符x的Unicode编码 |
pow(x, y, z=None) |
返回x的y次方,等价于x ** y或(x ** y) % z |
print(value, ..., sep=' ', end=' ', file = sys. stdout, flush=False) |
基本输出函数 |
quit() |
退出当前解释器环境 |
range([start,] end [, step] ) |
返回range对象,其中包含左闭右开区间[start,end)内以step为步长的整数 |
reduce(func, sequence[, initial]) |
将双参数的函数func以迭代的方式从左到右依次应用至序列seq中每个元素,最终返回单个值作为结果。在Python 2.x中该函数为内置函数,在Python 3.x中需要从functools中导入reduce函数再使用 |
repr(obj) |
返回对象obj的规范化字符串表示形式,对于大多数对象有eval(repr(obj))==obj |
reversed(seq) |
返回seq(可以是列表、元组、字符串、range以及其他可迭代对象)中所有元素逆序后的迭代器对象 |
round(x [, 小数位数]) |
对x进行四舍五入,若不指定小数位数,则返回整数 |
sorted(iterable, key=None, reverse=False) |
返回排序后的列表,其中iterable表示要排序的序列或迭代对象,key用来指定排序规则或依据,reverse用来指定升序或降序。该函数不改变iterable内任何元素的顺序 |
str(obj) |
把对象obj直接转换为字符串 |
sum(x, start=0) |
返回序列x中所有元素之和,要求序列x中所有元素必须为数字,允许指定起始值start,返回start+sum(x) |
type(obj) |
返回对象obj的类型 |
zip(seq1 [, seq2 [...]]) |
返回zip对象,其中元素为(seq1[i], seq2[i], ...)形式的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个 |
python数据类型:字符串、数值、元组、列表、集合、字典
python数值:整型、浮点型、虚数
之前的python版本分整型和长整型,不过在Python3之后,这两种类型统称为整型
Python在遇到无法处理的大数时将返回inf,这是infinity(无穷大)的缩写
python序列:元组、列表、集合、字典
切片
切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等类型。
切片使用2个冒号分隔的3个数字来完成,第一个数字表示切片开始位置(默认为0),第二个数字表示切片截止(但不包含)位置(默认为列表长度),第三个数字表示切片的步长(默认为1),当步长省略时可以顺便省略最后一个冒号。可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素。
切片操作不会因为下标越界而抛出异常,而是简单地在列表尾部截断或者返回一个空列表,代码具有更强的健壮性。
列表--可以更改的数据序列
list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。
index()方法获取指定元素首次出现的下标,若列表对象中不存在指定元素,则抛出异常。
count()方法统计指定元素在列表对象中出现的次数
append()方法每次只能向列表末端添加一个元素,原地修改列表,在列表尾部添加元素,速度较快。
extend()方法可以将另一个迭代对象的所有元素添加至该列表对象尾部,不改变其内存首地址,属于原地操作。
insert()方法将元素添加至列表的指定位置。
pop()方法删除并返回指定(默认为最后一个)位置上的元素,如果给定的索引超出了列表的范围则抛出异常。
remove()方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。
sort()方法进行原地排序,默认升序排序,支持多种不同的排序方法。
内置函数sorted对列表进行排序并返回新列表。
reverse()方法将元素原地逆序。
内置函数reversed方法对列表元素进行逆序排列并返回迭代对象。
列表常用方法
方法 |
说明 |
lst.append(x) |
将元素x添加至列表lst尾部 |
lst.extend(L) |
将列表L中所有元素添加至列表lst尾部 |
lst.insert(index, x) |
在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一个位置 |
lst.remove(x) |
在列表lst中删除首次出现的指定元素,该元素之后的所有元素前移一个位置 |
lst.pop([index]) |
删除并返回列表lst中下标为index(默认为-1)的元素 |
lst.clear() |
删除列表lst中所有元素,但保留列表对象 |
lst.index(x) |
返回列表lst中第一个值为x的元素的下标,若不存在值为x的元素则抛出异常 |
lst.count(x) |
返回指定元素x在列表lst中的出现次数 |
lst.reverse() |
对列表lst所有元素进行逆序 |
lst.sort(key=None, reverse=False) |
对列表lst中的元素进行排序,key用来指定排序依据,reverse决定升序(False)还是降序(True) |
lst.copy() |
返回列表lst的浅复制 |
元组--不可更改的数据序列
若要创建包含一个元素的元组,必须在该元素之后加一个逗号,例如 ('hello',)
使用tuple函数将其他序列转换为元组
元组中的数据一旦定义就不允许更改。
元组没有append()、extend()和insert()等方法,无法向元组中添加元素。
元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素。
从效果上看,tuple( )冻结列表,而list( )融化元组。
元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表。
字典--无序可变序列
键唯一,且不能为可变类型,比如整数、实数、复数、字符串、元组等等。
keys()方法可以返回字典的键列表
values()方法可以返回字典的值列表
items()方法可以返回字典的键、值对列表
globals()返回包含当前作用域内所有全局变量和值的字典
locals()返回包含当前作用域内所有局部变量和值的字典
update()方法将另一个字典的键、值对添加到当前字典对象
clear()方法来删除字典中所有元素
pop()方法删除并返回指定键的元素
popitem()方法删除并返回字典中的一个元素
集合--无序可变序列,元素不可重复,同一个集合中每个元素都是唯一的
集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据。
set()方法将其他类型数据转换为集合
pop()方法弹出并删除其中一个元素
remove()方法直接删除指定元素
clear()方法清空集合
集合支持交集、并集、差集等运算
集合包含关系测试