如何学习Python语言?
编辑日期: 2024-11-28 文章阅读: 次
如何学习Python语言?
1 说在前头
语言终究是用来使用的,就像汉语交流,我们每时每刻可能都在用。Python也不例外,最重要的是每天习惯使用它。无外乎,每天手敲代码,实现你想要的功能,可以是一个批量实现文件处理的自动化办公脚本,一个批量对车辆行驶轨迹的分析脚本,抑或是一个小型对话系统。遇到一些实际需求,立即拿一门编程语言实现它,日久天长你的语言能力不可能不提高。
2 学习基本语法
每门语言都有自己的语法规则,Python当然也有自己的一套语法系统。什么是Python的语法,比如Python中逻辑块是用缩进实现的,如下print这行一般缩进4个空格。
def f(name):
print('I\'m coming')
再有Python的单行注释使用#
,多行注释使用 """ """
;Python的流程控制使用for
, if elif else
, while
,当然还有一些极具个性的语法,如下我们判断某个点是在北京哪个环路时,如果if条件始终未被命中,就会走到else这个逻辑块,这是一个Python相对个性、难理解点的语法用法。
def where(point):
for circle in ['三环里','四环','五环','六环']:
if f(circle, point) == True:
print('点{}在{}环中'.format(point, circle))
break
else:
print('点{}在六环外'.format(point))
其他重要基本语法还包括:
- 算术转换
- 原子
- 原型
- await 表达式
- 幂运算符
- 一元算术和位运算
- 二元算术运算符
- 移位运算
- 二元位运算
- 比较运算
- 布尔运算
- 赋值表达式
- 条件表达式
- lambda 表达式
- 表达式列表
- 求值顺序
- 运算符优先级
这些基本语法在Python官网里都有,每天学一点就行,不必从头学到尾后再开展下一个环节。
https://docs.python.org/zh-cn/3/reference/index.html
3 使用Python库
Python除了强大的语法体系外,另一个最强大的地方非Python内置包和第三方库莫属了。我们说生态是最重要的一方面,光有语言系统,但是没有强大的生态体系,这个语言也不会繁荣的。这就像操作系统为啥主流的就是win, mac, linux呢? 难道我们国家就造不出一个操作系统吗? 显然不是的,关键是你造的操作系统,别的国家会基于你的操作系统开发软件吗?会开发app吗?如果office不支持我们的自研系统,如果python也不支持,那么我们自研的操作系统只能是自己在摆弄的系统。
3.1 Python标准内置库
Python内置了200+个内置模块,基本满足所有的日常开发,这是官网的介绍:
Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。
3.2 第三方包
https://pypi.org/
是Python第三方包的索引库,里面包括所有的Python第三方库。你还可以在这里发布自己的包,流程也非常简单,想象就激动人心。
不管是内置库,还是第三方包,都为让Python帮助我们干活,起到至关重要作用。使用它们,实现你的功能,就是迈出学好Python的第一步。
4 Python工程化
学习语言,使用库,算是学习Python的前两步,它们保证你写出的代码实现一些基本功能。但是,大部分程序员学习一门语言,是为了找一份高薪工作,是为了解决生活的基本需求,过上好日子的。
那么尽快掌握Python的工程化,让自己写出的代码更加professional,是更加重要的。掌握Python工程化,也并不难,还是要不断的练习,学习优秀框架,再练习,一个不断重复的过程。
所谓的练习就是使用Python实现一些功能,工作中实现项目交付,这时候大部分代码都是自己写出来的,你可能会自我感觉良好,觉得代码质量还不错,但是自我感觉和真实水平总会有一些gap,如何真实的检验出自己的代码水平呢?最好的方法就是学习很牛逼的、程序员都在使用的一个框架或者项目代码。通过优秀的代码,反射到你的代码中,找到差距,弥补不足,并努力补齐,真正晋升为Python工程师、软件工程师或算法工程师,无论哪一个,你都是工程师,代码工程化能力十分重要。
工程化能力都包括哪些呢? 很多小伙伴都有一种错误的认识,它们认为会使用一个框架,会调用里面的API,写出的代码没有Bug,认为这些就是主要的工程化。这种认识显然是片面的,这些当然是最基本,与其说是工程化,倒不如说保证程序正常运行。
工程化能力,还包括很多其他重要能力,你看看Keras的包,为什么它就能被tensorflow收购呢? Keras的作者首先是能力很强的软件工程师,工程化能力很强,框架里的API接口高度统一、高可读、高扩展,这才是真正工程化能力的体现,要想做到这些,并不简单,需要你不断学习这些优秀的框架。
设计模式是通往优秀框架大门的一把金钥匙,就像真正的武林高手,习武最后都感悟无刀胜有刀,练武是练魂,而非表也。设计模式的思想是统一的,常用的有二十种左右,真正归一后,可能只有五大类,把它们融入你的骨髓,融入到你的工作项目中。也许你的老板并不关心这些,但是你自己要不断提升,因为我们的目标不应该仅仅是完成项目,还有不断提升自己。仅仅解决一项项任务,并没有多难,难得是如何练出比别人更强的真功夫。
5 学习算法和数据结构
不管是用html,css,js做前端,还是Django,Flask做后端,还是mysql,Redis数据持久化,我们往往都会陷入一个困境:就是感觉每天在重复:增删改查,建库建表,并发同步,消息异步,熟练后,你就应该考虑拿出时间,学习算法和数据结构了。因为前面这些任务代码,年轻的同事入职一两年后,也会很快掌握,随着年龄过33、35后,你的优势会迅速被吞噬,并且你的价格可能还高,这些都是很现实的,你明白我的意思吗?但是算法和数据结构,我相信绝不是短时间内就能掌握的,你看看发明算法的那些大神,哪个不是摸打滚爬多年后才突发灵感做出来的。我们倒不是为了发明算法,就是学会它们也是一个很漫长的过程。
先认识一些最基础的算法思想,从递归,贪心,回溯,深、广优先搜索,动归,结合数学归纳法,这些思想就这么几个字,光知道没有任何用,得不断练习,不断思考,直到会用,怎么才算会用?遇到实际问题时,能应用它们非常顺手的解决问题为止。队列栈链表,从线性到非线性的二、多叉树,最后到图,这些数据结构存在的价值、优弱势在哪里,最后你需要很清楚。
当然还有若干编程技巧,使用哨兵会让我们写出的代码更加简洁,少讨论很多情况,太美妙了!
加油
最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!