前言
Python是一门使用非常广泛的语言,很容易入门,也被大家首推为编程入门的最佳语言。知数堂有幸邀请到DevOps开发专业人士: 章文炳老师,和他一块聊了一下学习Python的一些疑惑。大概问题如下:
-
怎么学习Python
-
系统的看了好几本Python的书,但还是不能独立的做一个编程,是为什么呢?章老师从本次在构建《Python运维自动化》这门课程的思想上给了我们以下解答。
怎么学Python基础
Python基础入门是比较简单的,基本3-4周就可以看完一门Python的书了。接着针对一些自己难以理解的地方着重练习一下。这里注意一下,我们在学习的过程中不需要对每一章的例子进行敲键盘,点个运行通过才算满意。从收益上来看,这种学习方式的性价比并不高,而且会将我们的学习时间拖得很久。这部分的学习,可以联系知数堂助教获取一份知数堂提供的Python基础视频。我们通过视频进行系统的学习,之后自己进行总结。Python基础这个环境,基本10-20天就可以突破了。
Python进阶实战
有学员反映说学习完Python基础,会觉得非常的茫然。因为这时候说工程,离工程太远;说算法,离算法太远。忽然感觉有一些东西不是Python语法上能解决的。这里举两个例子:
1、解决Python面向领导编程需要的实力
这里开个玩笑,提到一个面向领导编程。例如:我们需要把每天服务器运行情况及做一个汇总然后使用excel或是word的格式发给领导,加上精美的报表。
这里面就会涉及到:数据采集->抓取,数据整理分析,展示(模板), 生成报表(excel调用), word的生成(又一个新的模板格式),mail。从做这个面向领导的编程中,想把事情串起来,就会发现, 需要一系列的整合,整合是不是最佳,如何整合,对于新手都是一些比较迷茫的点。
章文炳老师在知数堂《Python运维自动化》课程中,就是从实战的角度带大家去完成这件事情。参考《Python运维自动化》第三章的 3.4 Python网络编程。
image2、高效解决问题的眼界
再说一个高效解决问题。例如:求给定一个数据:9是数组[2, 7, 11, 15, 9]中两元素相加的和,测打印出来两个两个元素的下标 : 0, 1。
新手的程序:
#!/usr/bin/env python
nums = [2, 7, 11, 15, 9]
target = 9
length = len(nums)
for i, item in enumerate(nums):
for j in range(i+1, length):
if nums[i] + nums[j] == target:
print([i, j])
break
也可以得到答案,但会发现,如果数组增大后,效率就变低了。老司机的做法:
#!/usr/bin/env python
nums = [2, 7, 11, 15, 9]
target = 9
dct = {}
for i, n in enumerate(nums):
if target - n in dct:
print(dct[target - n], i)
exit(0)
dct[n] = i
print("No two sums equal")
忽然就会发现这个更快,在大数据环境,也很快,立马对老司机充满了敬意。
听听老司机为什么这么做的,例如代码中的超时控制,老司机在实战项目,经常会提到这十几行代码,很多重要,大家可以把这个函数记下来,后面可以自已用,然后再来讲一下为什么重要,趟过什么坑。知数堂《Python运维自动化》带你深挖项目实战。
Python技术深度如何挖下去
Python这个语言,可以使用的地方非常广泛,很多机器、人工智能也在使用。但是对于这些想法,章文炳老师也给大家泼了一盆冷水“人工智能那些方向先不要看了,需要很多的数学要求,不是会Python就能上的“。
那么如果想在Python这个技能上提升,该怎么做呢?
章老师的定位:可以利Python随手完成工作中的任务,这样做不会感觉太有难度,理解开发中常见的组件及使用,可以和开发人员平等对话。例如:你需要明白ES, 消息队列, 并行框架, 自动化测试等等。在《Python运维自动化》课程中,也体会到这些问题:
image在这个章节中,就带着大家体验一下各种中间件是怎么用的,能完成什么工作,需要注意什么, 争取做一个全栈的DevOPS,进军SRE类的工程师。
如何做一个开源的产品
最后和章老师聊到怎么做一个开源的产品。聊到这个话题,感觉是一个非常大的话题。对于产品的定义可大小,章老师说,如果说一个产品,最简的形态web形态存,那么你要学习会django,vue这类东东,另外他举例说,在他的《Python运维自动化》课程,实战项目:MySQL慢日志收集,就可以说一个开源产品的雏形,在这个教学案例中,会完成:
-
线上MySQL慢日志收集入ES库
-
利用SOAR对慢日志产生优化建议
-
利用django进行日志展示
-
利用面向领导编程技术产生报表及输出
参考《Python运维自动化》
image《Python运维自动化》传送门:https://ke.qq.com/course/480869
在这个基础上丰富起来,如果能被别人利用起来,并且可以维护起来就是是一个不错的开源产品。
联系助教获取《Python运维自动化》大纲和相关资料
网友评论