谢邀。应该不是卡在Python了,而是卡住其他方面知识了。

GUI、数据库、Socket、邮件、Web、线程等等这些知识都是通用的。正规的学习路线可以去参考各大院校的教学大纲,这也是最推荐的方法。教学大纲在哪?很多学校的网站上都列出来了。

我不是科班出身的程序员,走的是纯野路子——一切以实务为出发点,哪里要用到,就猛学哪里;学了哪里,就要恶补相关的其他知识。

以网络编程为例。我我开始时是完全搞不懂为啥要起个套接字这么个诡异的名字的,后来自己把代码抄多了,隐约理解了套+接的意思。

刚接触Socket,我只有大学必修课网络那部分基础知识,所幸TCP/IP模型还记得,然而也只会抄书里的例子(其实就是API抄写)。生成,绑定,监听,发送,接收,虽然实现了简单效果,但是完全没有深刻理解机理。亏得这部分东西不是天天用,后来接触的语言多了,为了理解Socket API,我试着用不同语言改写教材的例子,比如我试过用C++、Java、C#、Python、Node.JS改写教材里Socket示例。人就是这样,接触的多了,自然而然就有了比较直观的认识。到这一步,算是有个大致印象了。

然后试着用理解东西实现一些简单的功能,比如我试过用Python按照飞鸽传书的协议发送消息;试过用nc命令行按照HTTP协议发送数据(顺带理解了GET和POST的本质区别)。到这一步,算是会抄API了。

然而这还不算完,写完了程序还要用wireshark对自己编写的程序通信过程抓包,充分理解每一个数据包背后都发生了什么。经过了这些,应该算是入了门。

这种方式劣势很明显,但好处也是有的。比如我在用C++编写Socket客户端的时候顺带理解了大小端——计算机概论里提过,但是只有我看到那些HEX的时候才理解;在用Python按照飞鸽协议发送局域网消息的时候意外发现了缓冲区漏洞,进而理解了堆、栈,和一些简单的缓冲区溢出攻击手法;还有一些至关重要的好处,是培养抄代码有用的信心,对自己编写的程序抓包,就对自己写的代码背后发生了什么有一个比较清晰的认识。最近某些现场设备的远程监控系统要进行平台迁移,领导安排了一个试点进行测试,然后在新平台上死活不上线。给我们提供服务的工程师都郁闷坏了,后台是别人编写好的EXE程序,日志只记录了通信中的一部分,从这部分日志来看,似乎是完全正常的。我看生产组的调度每天都来问我进度,于是自己动手分析了wireshark抓取的数据包,逆向了大部分,大概半小时左右就发现原因是RTU地址发生了变化(后来发现RTU有bug,隔一段时间地址就会重置)。

总结:不懂就抄教材里的代码,然后用不同语言换着法子抄,再写几个自己生活中遇到的例子,最后一猛子扎进去。

更多推荐

python编程实务_《python核心编程》的高级部分应该怎么学习?