标签:转换 为我 实现 分割 浅拷贝 解释器 测试 断包 rom
语言
Python
选择Python是因为Python是一门动态脚本型语言,也有人称之为胶水语言,实在是因为Python的应用太广泛了,什么都能做,但想做好还是要看领域。
由于Python是边解释边运行的,所以其速度肯定不如编译型语言如C的。
Python的语法简单,类型不需提前声明,对类的继承/多态实现比较好,用缩进控制语句块,总体来说Python还是很适合做开发入门的,熟悉了业务逻辑后,如果有需要,还可深入其它语言如Java/C#。
Python常用的解释器是CPython,用C语言实现的,在早期引入了全局解释锁/全局线程锁的概念,属于历史遗留问题,至今已成为连Python之父也觉得棘手的问题。
只需要知道,这个全局解释锁导致Python的多线程只能实现并发,而无法实现并行,简而言之就是同时只能有一个线程处于运行中,后面会详细介绍并发并行与多路复用io的概念。
Python现存的大版本分为2和3,建议直接学3,2现在处于阵痛期,等到更多的库用3重写后,相信使用2的人会越来越少,这是发展趋势。
类型
iterable 可迭代对象,实现了__iter__
方法;
iterator 迭代器,iterable调用__iter__
方法返回iterator,iterator实现了__next__
方法;
generator 生成器,不需要__iter__
和__next__
,只要有yield关键字即可。
- 字符串
- 字符串是str类的实例,支持encode()方法用于编码成其它如utf8/ascii等;
- 字符串是不可变类型,创建后就无法改变原字符串,但是可以创建新的字符串替换引用;
- 字符串常用的方法:
- 索引
- 切片
- 合并字串:‘‘.join(iterable)
- 分割字串:string.split([char][,num]) 以指定次数按指定字串进行分割,返回list
- 比较字串:直接==/!=或string.startwith([char][, start[, end]])/endwith
- 反转字串:函数/列表reverse方法/切片
- 查找字串:string.find([char][, start[, end]])/rfind
- 替换字串:string.replace(old, new[, num])实际是返回一个新的字串,该方法不支持正则
- 格式化:‘{下标位置:[填充字][对齐符<>^][宽度][千位分隔符,][精度.][类型]‘.format() 例子如‘{0:a^10,.2f}‘.format(2333.33)打印为a2,333.33a
- 列表
- 列表是可变类型,支持原处修改,因此要小心将列表作为参数传入函数;
- 列表常用方法:
- 索引、切片
- append添加任意对象
- copy浅拷贝,全切片也是浅拷贝
- remove移除靠前的对象
- index查找值的索引,若无则报错,因此最好用in判断
- sort排序,内置reverse参数默认False
- insert/pop/extend 插入/弹出/合并
- 字典
- key-value集合,是python中hashtable的实现;
- dict是无序的,但是从3.5开始,默认的dict是部分有序的,即根据存入键值对的顺序排序,但是在使用中它是无序的就行了,因为我们不通过下标去索引值;
- 创建方法:赋值创建d = {‘a‘:1, ‘b‘:2},工厂方法dict(),fromkeys方法d = dict.fromkeys(iterable, defaultvalue)
- 常用方法:
- 删除key-value,直接调用del d[key]或pop(key, default)
- 遍历items(),返回key-value元组的列表,keys()返回key列表,values()返回value列表
- get(key)获取指定key的值
- copy()浅拷贝
- 排序直接调用sorted方法,sorted(d.items(), key=lambda cmp: cmp[0]/cmp[1]),返回键值对元组的列表
- 更新字典update(dict)
- 解包:a, b, *c = dict.values()
- 元组
- 有序不可变类型,创建后则不可原处修改;
- 常用方法:
- 索引、切片
- 解包:a, b, c, ... = tuple
- 列表支持的查询操作,元组基本都支持
- 集合
- Python中的hashset实现;
- 常用于过滤列表中的重复元素,list(set(list))
- 创建 set(iterable) 或 {a, b, c, d}
- 差集 x - y
- 并集 x | y
- 交集 x & y
- 对称差集 x ^ y
- 文件
- 将文件读取到内存中作为一个对象进行处理;
- 常用操作:
- 创建 open(filename, mode=‘r‘/‘w‘/‘a‘/‘b‘, encoding=None),图片/视频等文件必须用‘b‘模式打开
- 读取readlines迭代器读取,readline生成器读取,read一次性读取
- 写入write一次性写入,writelines列表写入
- 删除 os.remove(f)
- 重命名 os.rename(old, new)
- 操作符
- a is b, a is not b 引用实体测试,判断是否具有相同id
- n = a if x else b 三元选择表达式
- 逻辑and/or/not 逻辑与或非
- 位&、|、^、>>、<<、~ 按位与/或/异或/右移/左移/取反
- a in b, a not in b 成员关系测试,判断包含关系
- 比较 <、>、<=、>=、==、!=
- 算术+、-、*、/、//、%、** 算术加/减/乘/除/地板除/取余/幂
- 地板除总是向下取整,截断除总是忽略小数部分
- 进制转换
- 其它进制转十进制用int(str, str的进制)
- 其它进制转十六进制用hex(str, str的进制)
- 其它进制转二进制用bin(str, str的进制)
- 其它进制转八进制用oct(str, str的进制)
一、开发基础(1)
标签:转换 为我 实现 分割 浅拷贝 解释器 测试 断包 rom
原文地址:https://www.cnblogs.com/ikct2017/p/9426103.html