前言
第一,绝对不断更;
第二,绝对认真写;
第三,绝对撰写的公正漂亮,记录机器人小蜓蜻队长前来觐见!
这场回顾知识时战,由我来做裁判~
简介
1、简介
- 解释型语言
- 运行速度慢(相较于编译型语言而言,解释型语言在执行时会先翻译为机器码)
- 定位:优雅、明确、简单
- 尽量写少、容易看懂的代码
- 目前有2个版本,2.x和3.x,他们不兼容哦(貌似2.x已经停止更新迭代了,建议直接从3.x入手学习~)
2、优点
- 高级编程语言,入门so easy~
- Python提供了非常完善的基础库
- 除了内置库,还有大量的第三方库(即他人开发)
3、使用场景
- 网站(如YouTube、豆瓣)
- 脚本
- 游戏
- 自动化测试🥳
- …再补充
基础知识
❗️基础知识 仅适合有编程基础的人看,建议想快速学习的人 直接找相关视频看(由于语法知识太多啦,笔者只想简写一下,一是为了现在重新回顾学习,二是为了日后长时间没有接触Python时能有一个笔记回顾 快速记忆~
- 注释#
- 大小写敏感
- 严格缩进
- pass语句->占位符
- a, b = b, a
类型变量
- 整数
- 相较于Java,Python对整数的存储长度没有大小限制✅
- 浮点数
- 也没有大小限制,但是超出计算机可以表示的浮点数的最大范围就表示为inf(无限大)
- -inf < 任何数 < +inf✅
- 字符串
- ‘aaa’、"aaa"皆可
- 和Java一样,是不可变对象~✅
- 布尔值
- True、False
- 空值
- None;注意0并不是控制哟✅
- 列表list
- 有序集合
- 里面的元素类型允许不同✅
- x = [‘aa’, True]
- len(x)
- x[0]取出第一个值
- x[-1]取出最后一个值
- x.append(‘ccc’)
- x.pop()删除末尾元素
- x[0] = 'aaa’直接替换列表中的所有元素
- [‘aa’, ['ccc]]就可以看为二维数组~
- 字典dict
- 在Java中被称为Map;无序
- key - value形式存储
- y = {‘k1’ : v1, ‘kk’ : v2}
- 查询快(利用索引)✅
- key唯一
- 取值y.get(‘k1’)
- 删除y.pop(‘k1’)
- 元组tuple
- z = (‘aa’, ‘bbb’)
- 有序列表,但是一旦初始化变不可以修改,因为不可变所有代码更安全;但是若z = (‘aa’, x),x是上面列表,它里面的值是可以变的噢
- 集合set
- s = set([‘aaa’,‘bbb’,‘bbb’]),入参必须提供list,出参为{‘aaa’,‘bbb’}
- 对内部元素去重处理
- s.add(key)增
- s.remove(key)删
- 两个集合可以做交集、并集~✅
高级特性
- 切片
- Python没有针对字符串的截取函数,只需要切片就搞定啦
- 针对list和tuple
- l[:2]、l[10:20]、l[:10:2]、l[::2]、l[:]、
- 迭代
- for循环遍历
- 列表生成式
- 简单而强大的创建list
- 譬如:[x * x for x in range(1,10) if x%3 == 0] 、[m + n for m in ‘abc’ for n in ‘xyz’]
- 列出目录下所有的文件和目录名:[d for d in os.listdir(’.’)]
- 生成器generator
- 一遍循环一遍计算的机制
- 创建一个generator方法
- 将一个列表生成式的[]转为()
- 与函数一步之遥,函数遇到return语句结束,而generator遇到yield语句结束
- 基本不用next()取值,而是for循环取值
- 迭代器iterator
- 可以被next()调用,并不断返回下一个值的对象,称为iterator
- 可用于for循环的都是可迭代对象Iterable;如list、dist、str
- 可用于next()的对象都是iterator;
- 但是Iterable可通过iter()获得一个iterator;iter(‘aa’)
函数式编程
- 函数参数类型错误 - Python解释器无法检查出来
- 支持返回多个值,实际上是一个tuple
- 函数本身也可以赋值给变量f = abs
高阶函数
- 一个函数可以接收另一个函数作为参数,该函数被称为高阶函数。
- map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回;
- 如map(func名,[Iterable是入参函数的参数])
- reduce(f,[l1,l2,l3])把结果继续和下一个元素做累计运算;
- 即f(f(l1,l2),l3)
- filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素;
- 如list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])) => 结果: [1, 5, 9, 15]
- sorted()函数就可以对list进行排序;
- 如sorted([36, 5, -12, 9, -21], key=abs)
- map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回;
偏函数
- 当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
- import functools
- int2 = functools.partial(int, base=2)
- int2(‘1000000’) => 64
装饰器decorator
- 在代码运行期间动态增加功能的方法
@xxx函数名
def test_func():
pass
匿名函数
- 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果
- 关键字lambda表示匿名函数