直播亮点
Python 最近几年的火热程度毋庸置疑,无论是哪个编程语言排行榜,它都能雷打不动地占据前几名的位置。
但 Python 也是一门易学难精的语言,虽然你可以很快用它写出简单可用的小程序,但如果你在工作中需要用 Python 来构建更复杂的项目,前方就会有无数的坑在等着你,一不留神就会在其中浪费不少时间和精力。
本次直播,尹会生老师将结合自己的实战经验,为你一一剖析那些在工作中最常见的坑,帮你提升工作效率,同时也让你了解更多的 Python 高阶技能。
python适合做什么
- 脚本
- 封装API
- 自动化运维 自动化测试
- 文本处理
- 财务统计 文字相关 正则表达
- 文字的识别 调用深度学习的库
- 文本合并
- 爬虫的数据不是规范化的 需要进行处理
- 网站开发
- 内部需求阔地
- 简单的界面、RestfulApi
- 图形展示类的需求
- 舆情监控
- WEB框架 Django、Flask
- 内部需求阔地
- 调度系统
- 程序耦合
- 调度系统
- 集群间的调度 组合、联动
- 科学计算
- Numpy Pandas
- 爬虫
- Beautifulsoup、urllib
- 机器学习
- 编程入门
坑
- 初期用python 实现快速的功能落地
- 后期并发量大了就要用Go、java重构
1.语法
- 1.字符串驻留
- python一切皆对象
- 长度0 a-z A-Z 会驻留
- 解释器认为两个字符串是一样的,纯字符的形式 虽然声明了两次 也认为是一样的
- 优点就是 可以节约大量的内存 对于早期的服务器有效果;对于现代的服务器
- a = "apple" b = "apple" a is b True
- 有特殊字符串就不行
- a = "apple!" b = "apple!" a is b False
- 2.相同值的不可变对象
- dict1 = dict()
常规的key冲突应该维护一个链表 python直接给覆盖了
In [1]: dict1 = dict()
In [2]: dict1[1] = "golang"
In [3]: dict1[1.0] = "python"
In [4]: dict1
Out[4]: {1: 'python'}
In [5]: dict1.keys()
Out[5]: [1]
In [6]: 1==1.0
Out[6]: True
- 3 生成器
- 为了保持协议的一致性
- 只能调用一次 取一次之后就为空了
In [23]: genexpr = ( lambda x: x*i for i in range(10) )
In [24]: for i in genexpr:
...: print(i(10))
...:
0
10
20
30
40
50
60
70
80
90
In [25]: for i in genexpr:
...: print(i(10))
...:
- 4.函数传参 函数所有的参数 就是一个对象 有指定的类型
def function1(var1, var2=[]):
var2.append(var1)
return var2
In [34]: data1= function1(111)
In [35]: print function1(111)
[111, 111]
In [36]: print function1(111)
[111, 111, 111]
In [37]: print function1(111)
[111, 111, 111, 111]
2. 框架
- 1 数据库连接池
- 2 数据库字符集
- emjoy 需要utf8mb4
3. 模块
-
1.类的多继承 python2 古典类 python3 新式类 继承顺序不一样 一个深度优先 一个广度优先 建议看下mro() python 变量作用域的规则 LEGB规则
-
2.使用模块而不是造轮子
- 自己开发的东西 没有考虑多线程 原子性 安全 传输的异常 建议优先考虑自带的模块
- 如果达不到pythonic的时候 再去找第三方库 再不行就自己写
-
要求工整 方便后期分析
-
logging模块 可以格式化输出 定制输出内容 比自己写一个要方便
-
urllib - requests - aiohttp(异步请求)
-
4.缓存
- 缓存雪崩与降级
- 缓存穿透解决办法
其他
- 虚拟环境
- 装饰器和设计模式
-
function.warps()
-
call callable对象
-
- GIL 影响计算行密集的任务