本文是一位程序员的Python学习心得分享,对于新手来说,如何快速入门始终是个难题。今天我们就来看看他的心得体会,相信会对你有所启发。
本人使用Python语言将近2年了,这2年的时间就是我自己被Python慢慢侵蚀和折服的2年。
因为从大学开始就一直接触C语言,也做过一些项目,所以在有一定的编程思维和逻辑的情况下,接触了Python。我自己深深懂得C/C++语言的逻辑严密性和编码复杂度,尤其想要写出高质量的C代码,更是难上加难。
这里也向大家推荐一本关于C/C++大神修炼的书《高质量C++》--林锐。但是,Python简直就是程序员们的福音,它提供了大量方便的标准库函数,还有第三方库及开源插件,举例来说:“AES加密”、“GreyLog”、“Django框架”等等......如果大家有兴趣的话,大家可以把这些Python提供的现有模块,在网上搜索一下,C/C++语言是如何实现这些功能的,绝对让你大跌眼镜,不得不被Python的强大所折服。
好了,表达完我对Python滔滔不绝的仰慕之情后,接下来说说我这两年对于Python学习和使用的一点心得。
一、Python基础入门
可能对于这个标题,大家可以在网上一搜一大把的信息,什么基础语法、环境搭建、变量类型、运算符,还有条件语句,blur,blur,blur......如果大家有一定的语言基础,比如在大学里学习过C语言的话,这些都不是问题,不过还请大家不要怪我啰嗦,这里还是要给一些没有任何语言基础,或者把大学里的知识老早就还给了老师的同学们一点学习的建议。
1、想要了解一门语言,一定要上手练习。
不妨按照网上搜索到的资料安装部署一套自己的Python开发环境,
并按照这些资料所说的一步一步的调试出一些小程序来,俗话说,熟能生巧,用的多了,也就理解这些基础语法了;
2、对于Python不得不了解一个概念,那就是“一切皆对象”。
老生常谈,如果你有C++的基础,那么这个概念就难不倒你,但是如果你还没有这个概念,那建议亲去看看网上的教程,亲自调试,亲自感受;
3、大家有事没事去各大论坛或者网站学一学Python有什么好用的第三方插件或者功能模块,比如:MySQLdb、Py2exe、BeautifulSoup及PyQuery等等......
这些实用的功能库,在大家以后的实战演练中一定能发挥重要作用。
4、另外,给大家推荐两本基础知识加固神器,《Python Cookbook(第2版)中文版》,《Python自动化运维 技术与最佳实践 [刘天斯著][机械工业出版社]》。
二、Python网站框架
1、Django的应用
Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句。Django 框架的核心组件有:用于创建模型的对象关系映射;为最终用户设计的完美管理界面;一流的 URL 设计;设计者友好的模板语言;缓存系统。
另外,推荐一个搭建简易Django网站框架的网址:
http://www.cnblogs.com/hongten/p/hongten_django_first_app.html
最后,分享一些个人认为项目开发中的重要知识点:
settings.py中有一些重要的基础配置,如数据库配置,是否采用csrf_token等;
django使用session前,需要在项目跟目录下,执行:python manage.py syncdb,;来创建Session存储表结构;
django调用前端的一些方法:①模板引擎约定的 {{ 变量 }}, {% 代码段落 %} 表示方法;在
显示表单:②{};③{% csrf_token %}
使网页可以通过csrf认证;
每个浏览器中只记录一套session信息,所以当同一个浏览器登陆不同用户时,session只会记录最后登陆的用户信息;
可以采用Ngnix搭载Django实现高并发与系统稳定。
2、Tornado的应用
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架。
我们开发这个Web 服务器的主要目的就是为了处理 FriendFeed 的实时功能 ——在 FriendFeed 的应用里每一个活动用户都会保持着一个服务器连接。
推荐网址:https://segmentfault.com/a/1190000002703321
个人认为,Tornado相对于Django访问数据库的速度是慢了一些,因为Tornado是单线程的,这意味着如果数据库查询返回过慢,整个服务器响应会被堵塞。所以在没有特别高并发的浏览访问的情况下,还是推荐先从Django学习入手。
3、Flask的应用
这是一个轻量级的 Web 应用框架,Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。
推荐网址:http://www.pythondoc.com/flask-mega-tutorial/index.html
个人认为,Flask更适合于小项目的快速开发,但是坑比较多,对你基础知识的掌握是个考验。
三、项目经验
首先要和大家说明一点,我这两年来做的一些项目都涉及到了公司内部的机密信息,所以就不能在github里和大家分享代码了。不过我接下来可以和大家交流一下开发心得。
项目开发中,个人认为最重要的事情就是需求的整理和设计文档的编写。按照我自己的经验来说,如果一个项目需要花费三个月的时间,那么需求的整理和设计文档的编写,起码要占用一个月甚至一个半月的时间。
1、需求分析
在需求分析阶段,我们要做的事情就是大量走访系统的使用客户,了解清楚他们有哪些需求点?对于每一个需求点到底有哪些使用场景?各种场景是否有一些极端情况?诸如此类问题,我们参与项目的每个人都要心知肚明,尤其对于项目负责人,更是要在心中了如指掌。了解清楚这些需求点互相之间的关联,修改或者调整其中一个功能是否会影响整个项目。
另外,对于一个项目的资源分配问题,我认为,一定要让不同模块的负责人都十分清楚客户的需求点,尽量让每个人知道自己负责的模块对整个项目的作用和影响。个人先前的经历,就是蒙头做自己的东西,做完了也不知道到底有什么作用(大家有没有同感呢?)。
2、项目设计
如果大家有机会的话,尽量多多参与项目的设计中。这对于个人把控整个项目的能力是一个极大的提升,另外对个人逻辑思维也是一种锻炼和挑战。讲真,对整个项目结构把控的能力需要在实战中慢慢提升,不是一朝一夕的事情,也没有什么武功秘籍。但是对于项目设计的一些流程,我还是有经验可以和大家分享一下的。首先,需求分析要做好;其次,从数据库设计入手来设计项目架构,从客户使用场景,模拟出数据流传输的流程;
另外,设计文档要标准规范,能画图的流程尽量不要写字;最后,及时与客户和组内人员沟通设计流程的可行性,与实施方案的高效性。
3、代码编写
具体的代码的编写,大家可以参考Goole提供的Python代码规范,链接奉上:http://www.elias.cn/Python/PythonStyleGuide?from=Develop.PythonStyleGuide(希望大家多多练习,注意规范)。好的编程习惯和风格,是减少后续代码调试甚至返工的有效利器。我认为好的代码编写规范要做到三点:统一规范,逻辑简洁,注释充分。举个反例,如果一开始写代码就没有写好注释,后来调试的时候,自己都不知道代码的含义是什么了,这是非常头疼的。
4、测试
测试是一件非常考验耐力的事情,需要把每一个功能点都测到位,即便是很极端的情况,也要造出一些数据来测试,也正是这一点会使得执行测试工作的人员非常烦躁。
但是这样一份令人烦躁的工作,恰恰保证了后续系统上线的稳定性。不过话又说回来,我们开发一个项目不能总是依赖测试来发现问题,所以之前所说的良好的代码编写规范和习惯,就是避免BUG的一种很好的方法。另外,从代码的角度来讲,要想把测试做到位,就要把代码里的每一个if语句都跑一遍。
5、交付上线
如果上述步骤都能做好,那么交付使用的话,就会很顺利了,否则,你懂得。
6、系统维护
首先版本控制一定要做好,这对问题排查和系统恢复有着很重要的作用;另外,要及时主动的搜集客户反馈,做好BUG修改和系统优化。
领取专属 10元无门槛券
私享最新 技术干货