码迷,mamicode.com
首页 > 其他好文 > 详细

一、开发基础(1)

时间:2018-08-05 16:57:20      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:转换   为我   实现   分割   浅拷贝   解释器   测试   断包   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!