今天我想和大家聊聊,回答一些大家留言给我的问题。这次我们用播客的形式,简单点,没那么正式。说真的,做视频挺累的,加编辑、排版、特效、动画什么的。这次,咱们就纯聊天吧。纯粹地想和大伙聊聊天,帮大家答疑解惑,没有任何的Python的教学啥的,这样制作压力会小不少。如果大家喜欢这样的形式,积极给我反馈,那么这样的聊天环节我们可以继续做下去。不喜欢呢,你就把这个视频收藏了,然后放在睡觉的时候当个晚安故事啊,我讲得这么无聊,说不定听着听着就睡着了呢。
好了,我们开始聊正题。前几天我收到了一位名叫“w吴吳”的朋友的一个留言。他问了我一个问题,他说“我是名大二的软工专业学生,我想要往Python方向发展,现在有点没方向。我跟着你学完这些视频就不知道再去看什么去专精。有点迷茫,希望能给些意见。”我觉得这个问题提的应该比较具有典型性的,可能代表了包括我在内大多准备或者正在学习Python的同好们的心声,就是如何学好Python的思路。感谢这位朋友的留言!首先,我不是像龟叔Guido van Rossum那样的编程大神,能够告诉你,你的专业应该去按怎么样的顺序去学哪一些的编程软件来丰富你的知识框架;也不是像张雪峰那样的专业规划师和你说你去学哪些专业方向对你未来的职业有帮助。既然你关注我的频道,我在这里就默认你对Python很感兴趣并且相信它能对你的工作或者生活带来帮助。
学Python嘛,我觉得有两点很重要。第一个,学Python的过程就是一个自我提问的过程,我从刚开始了解Python这个语言,到产生兴趣尝试去学习,再到最后不断地去实践、精通,都在不停地问我自己一些问题,我同样在回复“w吴吳”的时候也问了他类似的问题,这些问题我一会会聊,大家也可以试试在学习Python的路上不断地问问自己。第二,就是把学Python当成一种习惯。这是一个持之以恒细水长流的过程。我之前有段时间超级着迷于用Python和人工智能搞彩票预测,就是美国的Powerball强力球,因为那个时候奖池历史最高嘛。我就想着,能不能用技术来提高中奖率,顺便赚点小钱。结果呢?我发现我唯一稳定‘赚’到的就是bug越来越多。那会儿我就想,我这不是在玩彩票呢,就是在练习自己debug的耐心和技巧!不光是学习Python,你想做成任何事情都要去养成习惯。不是说,奥今天你发现了一个宝藏up主:赛博红兔,一天一口气看完他所有视频,你能跟着编一段段程序了。然后就甩一边,一个月两个月之后,你又想捡起来,这时候你可能连up主叫什么,视频在哪里都找不着了。
接下来,说说具体怎么学。大家肯定听过不少励志鸡汤,网上到处都是啊,什么《这份学习规划表加每日计划,被超过1000位学霸收藏》,《清华学霸每天睡5小时计划表比国家领导人还忙》,《高燃励志短片,没有自控力,你就是欲望的奴隶》,然后大家就开始焦虑开始卷起来了。每个人情况都不一样,但是我还是了解我自己的,我对自己的纪律性、自控能力是很没有信心的。我觉得人就是欲望的奴隶,越早认清越早掌控命运。单纯靠着超强的意志力、自控力去对抗拖延、惰性、无聊、反感这些情绪的时候,会输得一败涂地。那些自律的人并不是靠着单纯的自控能力。恰恰相反,他们是一群懒人,他们是依靠构建好自己的生活和节奏去养成习惯而不用单纯依靠个人的毅力。我们了解怎么掌握好习惯的时候,可以去看看为什么坏习惯这么容易养成而且不容易戒掉?比如说没日没夜地玩游戏,游戏本身没有错,一款好的游戏是个很好的消遣,我也是个游戏迷奥。但在我以前大学宿舍里,看到有些同学不分昼夜地玩,把别的更重要的事情给耽误了,这样的事情那是经常发生的。因为这些同学觉得大学自由,我的时间都是我自己的,考试嘛最后几天复习复习混个及格就可以了,然后人回到宿舍就有人喊了刀塔开黑就等你一个啦,其他人都齐刷刷在电脑前等你啦,你立马一屁股坐下来玩了一局,First Blood,Dominating,Holy Shit对吧?朋友和对手被你的操作闪瞎了双眼,成就感满满,你这个习惯就养成了,每天回来都得玩。这里对应的就是形成习惯的几个要素:身份认同、环境还有奖励。
首先,你要对自己有一个正确的身份认同。我打个比方,比如说别人都说我是个肥宅,我觉得自己也是个肥宅,那么我爱吃零食一会不吃就馋,天天蹲在家里,怕被别人指指点点,不敢和朋友去健身房,怕被人笑话,是不是挺正常的?再比如说,我是西甲豪门俱乐部的球星,亿万粉丝、俱乐部、广告商都盯着我,每天凌晨三四点就要去健身房练有氧、力量,朋友请客吃饭怕吃到高糖高油脂的食物都不敢去,是不是也挺正常。其实这两人都挺快乐的,但是前者的身体自然而然地堕落下来,而后者身体能够长期保持旺盛的战斗力。区别就在于,我们对自我的身份认同也影响了每个人的欲望。我们在学Python之前就要问自己,我为什么要学习Python?我现有的编程基础如何?我可以为学习Python分配多少时间和资源?我学习的最佳方式是什么?我们一个一个来看,为什么要学习Python?Python和其他所有编程语言一样,只是一个解决问题的工具,学这个工具是为了什么目标呢?比如,“w吴吳”这位朋友他学软件工程,可能是为了以后作为的软件工程师的职业发展,那你可以利用Python更轻松地学习面向对象编程和数据结构和算法之类的知识。那么如果不是软件专业的朋友呢?比方说,我是做智能化控制方向研究的,那么Python可以很好地帮我模拟动力系统控制,还有机器学习的数据训练。插一句,如果对机器学习感兴趣的朋友,吱一声,我考虑做一个人工智能的栏目。现在大多网上AI教程都浮于表面,教你怎么去用AI而不是真正去了解AI的底层逻辑和算法,讲得不怎么样还要收费,见了鬼了。当然还有做网络开发、数理统计、金融风险评估各行各业,甚至是为了解放双手想搞办公室自动化的,独立赚钱做小应用程序的等等,要有一个确定目标。你要是现在没有一个明确的目标,奥别人都在学或者我老师、爸妈、领导推荐我去学,学了对我好。这样的话,你去学Python肯定坚持不下去,还不如先把我的频道收藏了吧。然后是现在的编程基础如何?如果,你对编程无限接近0经验,那么恭喜你,Python作为你的第一门语言,是最简洁、好学、资源丰富、社区热度高的语言了。你可以先选择一个Python的编译器,初学者推荐Sublime Text或者直接在命令窗口编译,然后边写边学一些基础的概念和语法,可以按照我的这个思维导图学下来,看书或者看我的视频,具体这里就不说了。在这个时候,你还学的不多,没有很好的实践练习的项目。你可以照着书上或者视频里的代码案例或者小练习去编写,把手感和Python的编程规范先练出来。你可以过一段时间,靠自己理解去默写一些代码案例,中间编写不下去了也不要紧,再回头去看看原先的案例,你马上就会知道哪里还没有搞明白。接下来,是可以为学Python分配多少时间和资源还有学习的最佳方式是什么。如果,你是个在校学生或者有自己充沛的时间学习Python的,这里指的是每天2小时及以上,那么可以选择扎实地去学。你可以去看看优秀的教材,比如《Fluent Python》、《Effective Python: 90 Specific Ways to Write Better Python》,《Python Cookbook》之类的书,还有优秀的视频教材,这里除了我的视频就不推荐别人了啊,自己去找,同行之间才是赤裸裸的嫉妒。当你学完我思维列表里的初阶甚至中阶内容之后,或者你之前就有一些编程的基础学过别的语言比如C++,Java之类的。然后剩下的时间就用来实践练习,你可以去比如说leetcode上刷刷题,刷题本身不是目的,从简单的题目开始刷的时候,你会知道一些公司需要你掌握解决哪些问题的本事,还有你哪些知识点还是有没掌握好甚至没有听说过。比如说,你刷题的时候会发现原来很多软件公司需要你掌握数据结构和算法,这是你之前学Python很难学到的东西。你还可以试着做一些小项目,练练手,比如我用Python里的Pygame库做了不少小游戏,主要为了练习我的面向对象的编程的技术。大家要是感兴趣,和我说,我可以把它们放出来给你们玩,想学的话就教你们。你还可以尝试去解决眼前生活、学习或者工作遇到的一些问题。比如我有朋友工作的时候需要凭借excel表单出具一份pdf的证明书。我看他每天都照着成百上千行的表单手动去做一份份证明书很辛苦的。我花了一个星期帮他定制了一份办公室自动化的Python程序,以前他做一份证明要一个小时,现在只要5秒。剩下来的时间就自由支配了。他老板也不懂编程,到现在还不知道。当你每天一早起来要给你爸妈或者男女朋友报早安的时候,问问自己,这是不是Python自动化的一个项目呢?这样就能多睡五分钟了。Python是实践性交互性很强的编程语言,就是在干中学,走出自己的舒适区,不断挑战自己的软肋。我叫它应用驱动学习。比如说你需要管理数据库,你就去看SQL,Pandas这些,你需要做数据科学,就去看Numpy,SciPy这些。你喜欢机器学习与人工智能,就去看看Scikitlearn做一些机器学习项目的开发,了解一下TensorFlow或PyTorch等等深度学习的框架。针对你自己的方向,哪里不懂点哪里,而不是四面开花地学所有东西。像是在餐厅点菜,开始时你想尝试每一样菜,但最后发现自己只能吃下几样,给你带来的只会是焦虑和消化不良。
接着,你要问自己,我遇到的难题和挑战是什么,我如何克服它们?我如何保持学习的动力和兴趣?解决这些问题,你就需要把自己放到一个好的学习环境。你每天一回家,房间里放一张大床和一台游戏机,边上一堆瓜果点心,你就很难学进去了。你可以相信自控力保持学习一天两天。但是周围的诱惑太多,人总是会去做容易的好玩的事情。当然这里说的不光是物质上的环境,还要学习的氛围。如果你每天学习时间有限,甚至几天或者一星期才有时间学也没关系。你利用碎片化的时间,整理好一份网上的教学视频列表 ,每天看几集学一些知识点,这里很推荐时间不足的朋友去看视频学习,因为可以快速吸收知识,视频提供了视觉和听觉的双重刺激,你可以直接看到代码运行的过程和结果。而且很有灵活性,你可以在通勤、休息或是任何零碎时间观看视频,利用碎片时间进行学习。最关键的是互动性强,像在我的频道你可以随时给我留言或者提建议,我还有频道里这么多同好都会实时帮你解答和交流。或者刷一些题,像leetcode上有无数和你一样在学习Python的人,社区氛围也是很欢迎萌新的,你在里面可以提问或者给出自己最优的答案。或者把自己的项目传到像Github这样的代码托管网站,每次更新一个版本写一些项目更新日志,可以让自己感到在不断地进步。去搜搜别人的项目看看有没有自己感兴趣的,可以克隆下来去学着使用或者帮着合作编写。始终保持好奇心,探索新工具、新的库和新技术。另外,你要是能接触到一些以ChatGPT为代表的大语言模型,通过不断地向它提问,学习它编写的或者帮你优化的程序,那么进步起来会更快。
最后你要问自己,我如何将学到的Python技能用到实际项目里?我如何保持对Python和编程技能的持续更新?我是否愿意分享自己的知识和经验,帮助别人学习Python?要回答这些问题,最重要的就是一定一定要给自己足够的奖励。只有当好习惯给我们带来的快感奖励高过其他的诱惑或者欲望,才能够持续下去。你最大的敌人不是失败,而是无聊。大家懂我的意思吧?千万不要吝啬对自己的奖励,一定要让自己的身心都高兴起来。在刚开始学Python的时候,不管你学了多少,你都可以把一些印象深的有意思的知识点讲给你身边的人听,你爸妈、儿女、同学、朋友、老师、学生、同事、赛博红兔总有人愿意去听你说的东西。你要相信我就去试一试,他们的反馈有些时候是你意想不到的。和别人分享你学到的东西会给你带来极大的快感。比如说,我昨天和我朋友说我刚知道原来Python的创始人龟叔是BBC电视剧《蒙提·派森的飞行马戏团》(Monty Python’s Flying Circus)的忠实粉丝,所以把他的这个宝贝发明叫做Python,不是因为他喜欢蛇。我朋友说,啊?Python是蛇的意思啊?你看两个人都学到东西了。像我不就在把我学到的东西讲给你们听吗?这就是我为什么要开这个频道的原因之一了,每次你们的留言评论,还有三连打赏,对我都是一种激励,所以尽管地来吧不要停!当然啦,每当达成一个小目标,给自己一些小奖励。比如说休息一段时间、看一集喜欢的电视剧,或者是约朋友出去搓一顿都是极好的。在学了一段时间之后,你可以选择一些有趣的项目,然后把它们放到Github之类的网上,把自己的项目开源或者参加一些别人开源的项目,或者再家里寝室里给爸妈、朋友演示,展示一下你每天的进度,关键是和大家分享,获得他人的认可和关注本身就是一种巨大的激励。前段时间,我在玩那个Raspberry Pi,知道吧,就那个一块小巧的芯片板。我用Python给它弄了个动作感应的程序,想看看能不能抓到我家狗狗的可爱瞬间。结果几天下来,我发现触发摄像头最多的竟然是我自己不是狗。原来我每晚都会悄悄跑去厨房开冰箱吃点东西。或者你去leetcode上面刷题,一开始给自己定一段时间解答,比如30分钟,解不出来就去看解答,一开始即使做不出来也不用气馁,只要下一次遇到同类型的题目,自己的思路比上一次更加深入,就是进步了。一开始慢一点没关系,只要坚持下去就好。 从一开始有自己的思路,靠参考解答写出代码。到看到同类题目时就有明确的思路,知道最佳的解法。再到最后看到一道题时就知道它的考察点,能短时间内写出代码。整个过程,你的成就感就上来了。这个过程听起来艰难,但实际并不是这样的,当你持续刷题一周,两周,一个月后,每天刷题就会像呼吸一样变成一件自然的事情。而且刷题也并不意味着是必须把Code写出来,Bug Free的提交,今天比较忙,那么我看一道题,想一下思路,写一下伪代码,保持一下状态,也是可以的。还有像我之前讲的,编写的游戏给你最好的朋友玩,用办公室自动化的程序把你老板蒙在鼓里,这些都是让人感到愉悦的事情。
好了,今天我就聊这么多,祝大家在学Python的路上越走越顺!

Leave a comment