Python是一门动态语言,解释执行,所有错误都是运行时产生的,即使有错误和异常,只要没有被执行到也不会有错,比如调用不存在的方法;类型是隐式的,也即无需变量类型声明;类型是动态,运行时根据变量指向的内容来决定类型,但是Python是强类型语言,即每个变量都是有类型的。
Python 基本built-in类型主要有numerics,sequences, mapping, files, classes, instances, exceptions,类型上都会存在的操作有比较、是否为真、转换为字符串toString,Python中使用str/repr(object)可转换为字符串, print(object)时会隐式调用str()。
numerics:
整形 int,用c语言中的long实现, 取值范围-sys.maxint-1~sys.maxin, 无sys.minint
长整形 long, 带有L/l的integer或超出integer范围的,print时会带后缀L,无精度限制,无限大,因此Python中都是有符号数,没有unsigned类型
浮点型 float,用c中的double实现,sys.float_info, 因此Python中无单双精度区分
复数 complex, z.real, z.imag
不同类型的numerics可以混合运算,遵循规则类似c,也即小范围向大范围转型,int
整除/ : 结果总是整数,哪怕除数、被除数不是整数,而且结果总是趋向负无穷大,-1/2=-1
0的0次幂:pow(0,0) =1, 0**0=1
NaN: not a number , INF:无穷大,-inf +inf , float('nan') float('+inf') float('-inf')
int(), long() 都是向下转型,对应实数int long float还可以用以下方式取舍:
bool布尔:用于if/while后做条件判断
True:非False即为True
False: None, False, 数字类型0,空容器,包括空字符串‘’, class的__nonzero__() 或__len__返回0或False的实例
bool运算符:or and not, 遵循类似java/c的short-circuit, not比non-Boolean operator优先级低,not a==b 等价于not (a==b)
比较运算符: 也用于所有类型的比较,优先级比Boolean operator高,且支持x
bitwise operation: 位运算只对整数操作有意义,位运算优先级比数字运算符低,但比比较运算符高; ~与其他的一元运算符优先级(+,-)相同,以下表格中优先级从低到高, 负数移位会抛出ValueError异常
int.bit_length():获取int bit表示长度
long.bit_length():获取long bit表示长度
字符:长度为1的字符串,也即没有单个字符
字符串: 单引号'abc' 或双引号''abc" 或三个连续单/双引号'''表示多行字符串,字符串可理解为常量字节数组或字节容器,类似Java中String,也不能通过变量改变指向的字符串, s='abc'; id(s) == id('abc')。
字符串上常用操作:
长度:容器统一用len(),
子串:容器分片操作符[] 'abcd'[1:3]='bc'
分隔:split/rsplit
查找/替换:find/rfind 没找到返回-1; index/rindex没找到抛ValueError, replace
trim: strip/lstrip/rstrip
编/解码:只能对str解码 str('汉').decode('UTF-8'), 只能对Unicode编码 u('汉').encode('UTF-8')
大小写转换: lower/uper
判断:isalnum/isalpha/isdigit/islower/isspace/isupper/startwith/endwith
格式化: %+tuple/dict,类似c语言sprintf,一个参数'%d' % 1 = '1' ; 两个参数'%s, %s' %('a','b') = 'a,b'; 指
定占位符%(mapping key)+类型字符,mapping key需加括号'%(key1)s, %(key2)d' %{'key1':'a', 'key2':1}='a,1'
Python中很容易获取帮助:
help(object):显示帮助信息
dir(object) :显示所有方法
object.__doc__ :显示文档