1.1 Python对象模型
1.2Python变量
+ | 算术加法,列表、元祖、字符串合并 |
- | 算术减法,集合差集,相反数 |
* | 序列重复 list*3 |
/ | 真除法 |
// | 求整数,如果5.0//3 得到1.0 |
% | 求余,字符格式化 |
<、>、==、!= | 集合和集合之间的关系运算 |
or | 逻辑或 |
and | 逻辑与 |
not | 逻辑非 |
in | 成员测试 |
is | 对象同一性测试,测试是否为同一对象或内存地址是否相同,如果同一个对象,对一个进行修改可能会影响另一个 |
|,^,&,<<.>>,~ | 按位运算 |
&,| | 集合交集、并集、对称差集 |
@ | 矩阵相乘运算符,numpy模块科学计算 |
- 关系运算符可以连用:1<2<3
- 集合比较是可以比较是不是子集
- range(a,b,c) 包含a不包含b在此区间内, 步长为1
- x = [1,2,3] ,y = [1,2,3] x is y 为false
- {1,2,3}^{3,4,5} 对称差集
- 3 and 5 返回最后一个表达式的值作为整个表达式的值
1.3 常用内置函数
abs | 返回数字绝对值,复数的模 |
all(iterable) | 如果所有元素都等价于True,空也返回True |
any(iterable) | 只要有true 返回true 空的迭代对象也返回true |
ascii(obj) | 把对象转化成ascii码 |
bin | 整数转2进制 |
bool | 返回与x等价的布尔值 True False |
bytes(x) | 生成字节串,或把对象x转换成字节串 |
callable(obj) | 测试对象obj是否可以调用,包含__call__方法的类的对象也是可以调用的 |
compile() | 用于把python代码编译成可悲exec()或eval()函数执行的代码对象 |
complex(real,[imag]) | 返回复数 |
chr(x) | 返回unicode编码为x的字符 |
ord(x) | 返回一个字符x的Unicode编码 |
hex(x) | 转16进制 |
delattr(obj,name) | 删除属性,等价于del obj.name |
dir(obj) | 返回指定对象或模块的成员列表,如果不带参数,返回当前作用域内所有的表示符 |
divmod(x,y) | 返回包含整商和余数的元祖((x-x%y)/y,x%y) |
enumerate(iterable[,start]) | 枚举iterable中所有的元素,返回元素的位置和值的元祖 |
eval(s[,globals[,locals ]]) | 计算并返回字符串s中表达式的值 |
exec(x) | 执行代码或代码对象x |
exit() | 推出当前解释器环境 |
filter(func,seq) | 返回filter对象,其中包含序列seq中使得单参数函数func返回值为True的那些元素,如果函数func为None则返回包含seq中等价于True的元素的filter对象----把一个函数左右到一个序列上或者迭代对象上,函数必须是单参数函数,seq中每个元素作为参数去func执行,返回true则留下 |
float | 把蒸熟或字符串x转换为浮点数并返回 |
frozenset([x]) | 创建不可变字典对象 |
getattr(obj,name[,default]) | 获取对像中指定属性的值,==>obj.name |
globals() | 返回当前作用域内全局变量及其值的字典 |
hash(x) | 返回对象x的哈希值,如果x不可hash则抛出异常 |
help(obj) | 返回对象的帮助信息 |
id(obj) | 返回对象的内存地址 |
input(['提示']) | 显示提示,接受键盘输入内容,返回的是字符串 |
isinstance(obj,class-or-type-or-tuple) | 测试对象obj是否属于指定类型,如果多个类型,需要放到元祖中 |
iter(..) | 返回指定对象的可迭代对象 |
len(obj) | 返回obj中包含的元素个数 |
list([x]),set([x])
tuple([x]),dict([x])
|
对象x转换
无参数,创建空的
|
locals() | 返回当前作用域内局部变量及其值的字典 |
map(func,*iterables) | 把函数作用到序列上,返回map对象,对象的元素是函数的返回结果 |
max(x),min(x) | 返回可迭代对象x中的最大值,最小值,要求x中的所有元素之间可比较大小,允许指定排序规则和x为空时返回的默认值 |
next(iterator,[,default]) | 返回可迭代对象中的下一个元素,允许指定迭代对象结束后继续迭代返回的默认值 |
oct(x) | 把整数x转换为八进制串 |
open(name[,mode]) |
以指定模式mode 打开文件name 并返回文件对象
打开不成功时,
|
pow(x,y,z) | 返回x的y次方,x ** y % z |
print(value,...,sep=' ', end='\n',file=sys.stdout,flush=False) | 基本输出函数 |
quit() | 退出当前解释器 |
range([start,]end[,step]) | 返回range对象左闭右开区间步长step |
reduce(func,sequence[,initial]) |
python2内置,python3需要from functools导入
将双参数的函数func以迭代的方式从左到右依次应用到序列seq中每个元素,最终返回单个值作为结果,
迭代-----第一次时,双参数为序列中的前两个元素,第二次,将第一次的结果作为第一个参数,第二个参数为序列第二个元素
|
repr(obj) | 返回对象obk的规范化字符串表示形式,对于大多数对象,eval(repr(obj))==obj,类似print显示对象的值 |
reserveed(seq) | 返回新的迭代器对象 |
round(x [,小数位数]) | 四舍五入 |
sorted(iterable,key=None,resrve=False) |
False升序 True降序
key可以时lambd表达式
|
str(obj) | 对象转化字符串 |
sum(x,start=0) |
求和
如果x为列表,把start=[],返回start+sum(x)
>>> sum([['a','b','c','d'],['b']],[])
['a', 'b', 'c', 'd', 'b']
可以这么玩
|
type(obj) | 返回对象类型 |
zip(seq[,seq2]) |
返回zip对象
最终结果中包含的元素个数取最短的
zip对象为 (seq[0],seq2[0]),(seq[1],seq2[1])
|
reduce(func(a,b),seq)
func为双参数函数
假设seq有5个元素,
第一次为 func(seq[0],seq[1])
第二次为 func(func(seq[0],seq[1]),seq[2])
第三次为 func(func(func(seq[0],seq[1]),seq[2]),seq[3])
直到序列下一个元素为空
即除了第一次,接下来的执行都是,以上一次函数执行的结果为第一个参数,当前迭代元素为第二个参数,运行func
filter()将一个单参数的函数作用到一个序列上,回归该序列中使得该函数返回值为True的元素
range([start,]end[,step]) start 默认为0,step默认为1
zip(seq1,seq2)
两个序列左对齐,从左往右,返回多个元祖,
每个元祖的两个元素就是序列1和序列2的元素值,拉到其中一个序列没有值,停止
1.4 对象的删除
del只是删除对象和值之间的引用关系,如果删除引用后,该值没有被其他变量引用,则删除该值
del我命令无法删除元祖或字符串中的元素,只可以删除整个元祖和字符串,因为元祖和字符串属于不可变序列
1.5基本输入输出
x=input("please input:")
python2 使用输出界定符来确定输入的类型。
input:3
type为int
input:'3'
type为str
input::'[1,2,3]'
type为list
python3 一律作为字符串返回赋值给变量
输出:python2 print 'dd'
输出到文件
=======python2========
fp = open(r'dd.txt','a+')
print >>fp,"helloworld"
fp.close
========python3========
fp = open(r'dd.txt','a+')
print('helloworld',file = fp)
fp.close
输出换行问题
=========python2=======
print i,
=========python2=======
print('',end=' ')
1.6模块的导入和使用
import 模块名
import sys
sys.modules.items
from 模块名 import 对象名 [as 别名]
from math import sin as sinfunc
from math import * 不推荐使用
在2中可以使用reload函数重新导入一个模块,在3中需要使用imp模块导入reload函数
python首先会在当前目录中查找需要导入的模块,如果没有找到则从sys模块的path变量中查找
>>>sys.path
['', '/Users/jinshengkai/Documents', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
导入模块时,优先导入相应的pyc文件,如果pyc文件与py文件时间不相符,则导入py文件重新编译该模块
可以使用sys.path.append(r'')导入文件夹
如果需要导入多个模块
导入顺序:
1.标准库
2.成熟的第三方扩展库
3.自己开发的库