1. 首页
  2. IT资讯

Python开发经验的程序员写给初学者的总结,希望有用

我的经验主要基于Python 2.7,但是大多数的工具对任何版本都有效。

如果你从来没有使用过Python,我强烈建议你阅读Python introduction,因为你需要知道基本的语法和类型。

包管理

Python世界最棒的地方之一,就是大量的第三方程序包。同样,管理这些包也非常容易。按照惯例,会在 requirements.txt 文件中列出项目所需要的包。每个包占一行,通常还包含版本号。这里有一个例子,本博客使用Pelican:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

Python 程序包有一个缺陷是,它们默认会进行全局安装。我们将要使用一个工具,使我们每个项目都有一个独立的环境,这个工具叫virtualenv。我们同样要安装一个更高级的包管理工具,叫做pip,他可以和virtualenv配合工作。

首先,我们需要安装pip。大多数python安装程序已经内置了easy_install(python默认的包管理工具),所以我们就使用easy_install pip来安装pip。这应该是你最后一次使用easy_install 了。如果你并没有安装easy_install ,在linux系统中,貌似从python-setuptools 包中可以获得。

如果你使用的Python版本高于等于3.3, 那么Virtualenv 已经是标准库的一部分了,所以没有必要再去安装它了。

下一步,你希望安装virtualenv和virtualenvwrapper。Virtualenv使你能够为每个项目创造一个独立的环境。尤其是当你的不同项目使用不同版本的包时,这一点特别有用。Virtualenv wrapper 提供了一些不错的脚本,可以让一些事情变得容易。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

当virtualenvwrapper安装后,它会把virtualenv列为依赖包,所以会自动安装。

打开一个新的shell,输入mkvirtualenv test 。如果你打开另外一个shell,则你就不在这个virtualenv中了,你可以通过workon test 来启动。如果你的工作完成了,可以使用deactivate 来停用。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

IPython

IPython是标准Python交互式的编程环境的一个替代品,支持自动补全,文档快速访问,以及标准交互式编程环境本应该具备的很多其他功能。

当你处在一个虚拟环境中的时候,可以很简单的使用pip install ipython 来进行安装,在命令行中使用ipython 来启动

在职八年Python开发经验的程序员写给初学者的总结,希望有用

另一个不错的功能是”笔记本”,这个功能需要额外的组件。安装完成后,你可以使用ipython notebook,而且会有一个不错的网页UI,你可以创建笔记本。这在科学计算领域很流行。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

测试

我推荐使用nose或是py.test。我大部分情况下用nose。它们基本上是类似的。我将讲解nose的一些细节。

这里有一个人为创建的可笑的使用nose进行测试的例子。在一个以test_开头的文件中的所有以test_开头的函数,都会被调用:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

不出所料,当运行nose的时候,我们的测试没有通过。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

nose.tools中同样也有一些便捷的方法可以调用

在职八年Python开发经验的程序员写给初学者的总结,希望有用

如果你想使用更加类似JUnit的方法,也是可以的:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

开始测试:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

卓越的Mock库包含在Python 3 中,但是如果你在使用Python 2,可以使用pypi来获取。这个测试将进行一个远程调用,但是这次调用将耗时10s。这个例子显然是人为捏造的。我们使用mock来返回样本数据而不是真正的进行调用。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

当然,我们的测试需要很长的时间。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

太慢了!因此我们会问自己,我们在测试什么?我们需要测试远程调用是否有用,还是我们要测试当我们获得数据后要做什么?大多数情况下是后者。让我们摆脱这个愚蠢的远程调用吧:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

好吧,让我们再试一次:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

好多了。记住,这个例子进行了荒唐的简化。就我个人来讲,我仅仅会忽略从远程系统的调用,而不是我的数据库调用。

nose-progressive是一个很好的模块,它可以改善nose的输出,让错误在发生时就显示出来,而不是留到最后。如果你的测试需要花费一定的时间,那么这是件好事。

pip install nose-progressive 并且在你的nosetests中添加–with-progressive


调试

iPDB是一个极好的工具,我已经用它查出了很多匪夷所思的bug。pip install ipdb 安装该工具,然后在你的代码中import ipdb; ipdb.set_trace(),然后你会在你的程序运行时,获得一个很好的交互式提示。它每次执行程序的一行并且检查变量。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

python内置了一个很好的追踪模块,帮助我搞清楚发生了什么。这里有一个没什么用的python程序:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

这里是对这个程序的追踪结果:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

当你想要搞清楚其他程序的内部构造的时候,这个功能非常有用。如果你以前用过strace,它们的工作方式很相像

在一些场合,我使用pycallgraph来追踪性能问题。它可以创建函数调用时间和次数的图表。

在职八年Python开发经验的程序员写给初学者的总结,希望有用

最后,objgraph对于查找内存泄露非常有用。这里有一篇关于如何使用它查找内存泄露的好文。


Gevent

Gevent 是一个很好的库,封装了Greenlets,使得Python具备了异步调用的功能。是的,非常棒。我最爱的功能是Pool,它抽象了异步调用部分,给我们提供了可以简单使用的途径,一个异步的map()函数:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

非常重要的是,需要注意这段代码顶部对gevent monkey进行的补丁,如果没有它的话,就不能正确的运行。如果我们让Python连续调用 fetch_url 3次,通常我们期望这个过程花费30秒时间。使用gevent:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

如果你有很多数据库调用或是从远程URLs获取,这是非常有用的。我并不是很喜欢回调函数,所以这一抽象对我来说效果很好。


结论

好吧,如果你看到这里了,那么你很可能已经学到了一些新东西。这些工具,在过去的一年里对我影响重大。找打它们花费了不少时间,所以希望本文能够减少其他人想要很好利用这门语言需要付出的努力。

我是完全自学的,看完这条回答你就不用花钱学了。一千多的课程也就是基础课,并不会给你有多深入。如果要是学基础的话,看看下面的学习线路图以及相关的学习方法足够了。贴一个我之前自学的路径图和方法。

小白学Python需要先找到自己的学习目的。说小一点的,想实现爬一个网站。大一点,未来想做数据方面的工作。不管是小目的还是大的,都必须弄清楚。只有清楚的看到目标才知道当下学的是什么。

懒人目录:

  • 入门Python需要下载什么软件
  • 入门Python从哪里学起
  • 优质的自学资源分享

一、入门Python需要下载的软件

Python和PyCharm。Mac还是Windows根据自己的本选。

至于其他编程相关软件:火狐浏览器、谷歌浏览器、文件搜索利器Everything、局域网通信软件飞秋、虚拟机VMwareworkstation full、Linux版Mysql、Windows版MySQL、数据库客户端Navicat、自动化测试selenium、代码版本管理器Git、代码编辑器Sublime Text、文本编辑器Ty.pora;

以上内容,我这边是都有的网盘的,但是一放上来就会被举报。所以大家还是自己去私信【Python】,

以上内容不用全部都下载,需要什么下载什么就可以。不想涉及web的话,是不用安装PS的。下面就分享一下,Python的职业发展还有学习路线图。

二、入门Python从哪里学起

入门的话,是要从了解Python开始学起来。先知道它在什么领域可以做什么。文章篇幅过长,有需要的建议慢慢看。首先来看一下,Python的职业发展路径:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

简化一下之后的图:

在职八年Python开发经验的程序员写给初学者的总结,希望有用

1.Python基础

  • 计算机组成原理:计算机组成部分、操作系统分类、B/S和C/S架构、理解软件与硬件的区别
  • Python变量以及开发环境:字符串、数字、字典、列表、元祖等
  • 流程控制语句:程序的执行顺序,顺序执行、循环执行、选择执行
  • 函数:定义函数、调用函数、函数的嵌套、递归函数
  • 文件的基本操作:文件的打开、编辑、关闭
  • 面向对象编程:类对象、实例对象、定义类、实例化对象
  • 异常处理:学会捕捉异常、自定义异常
  • 模块和包:理解模块和包的概念并学会使用
  • 飞机大战游戏制作:自己独立完成飞机大战游戏

2.开发框架

大部分后台的业务都会使用到web框架来开发,可以提高工作效率。Python当中常用的web框架是Django、Flask、Tornado等。

  • Django框架:Git源代码管理、Redis缓存、VUE介绍、Vue基本语法、ES6语法、VUE 生命周期、Django框架介绍、Django模型、ORM及数据库操作、视图及模板、Django中间件

3.数据库

只说最常用的三种类型数据库,都是网站业务后端使用率很高的。Mysql、Mongodb,Redis;这三种数据库分别是关系型数据库,文档型数据库还有内存型的数据库。需要学的就是如何使用并且设计,最后是优化。

4.前端知识

  • HTML的学习:HTML的文档结构、快速创建HTML方法
  • CSS:CSS的使用
  • PS的简单应用:Photoshop的基本使用、取色、图层
  • JavaScript的学习:JavaScript的基本语法
  • jQuery的学习:jQuery的使用
  • Vue框架:框架的使用以及注意点

5.web服务器

  • Flask web框架的使用:模板与表单、数据库的使用、单元测试、第三方扩展与部署、Redis缓存使用、GIT版本控制、云服务器的使用、验证码的收发、网站项目开发实战
  • Django web框架的使用:框架的使用方法、模型介绍、ORM以及数据库操作、视图以及模板、Django中间件、Django REST Framework、网站项目开发实战

6.Linux操作系统

Nginx是在Linux服务器上运行的,所以需要学习Linux系统。

  • Linux命令:Ubuntu操作系统介绍与使用、Linux命令使用、Linux命令选项的使用、远程登录和远程拷贝、vim编辑器使用、Ubuntu软件安装和软件卸载

上述针对目的为使用Python做网站开发所需要的知识点。如果有需要爬虫方面的,或者是数据方面的细分知识点。留言或者私信我~~【Python】

三、优质的自学资源分享

Python学习教程:

  • Python入门教程完整版(懂中文就能学会)
  • Python全栈快速搭建Web服务器
  • Python进阶之Django框架
  • bootstrap商业网站实战1
  • bootstrap商业网站实战2

以上全部内容,均有配套资料。内含有PPT课件,课程笔记和源码。

有需要的可以评论私信【Python】。

Python每个阶段课后习题(按照顺序):

  • Python基础知识习题
  • Python有关变量、数据类型以及运算符的习题
  • Python函数相关的练习题
  • Python中判断语句以及循环语句的习题
  • Python字符串操作的相关函数习题
  • Python中列表、元祖和字典的习题
  • Python函数的闭包、装饰器等练习题
  • Python中文件操作的相关习题
  • Python异常相关的全部笔试题
  • Python中模块的所含内容习题
  • Python面向对象习题,笔试内容
  • Python封装、继承和多态以及类方法等习题

下面给大家看一下我为大家准备的python自学视频教程

本套资料归总有九大模块

在职八年Python开发经验的程序员写给初学者的总结,希望有用

学习大纲+路线

第一阶段Python入门

章节1:Python入门

章节2:编程基本概念

章节3:序列

章节4:控制语句

章节5:函数

章节6:面向对象编程

第二阶段Python 深入与提高

章节1:异常处理

章节2:游戏开发-坦克大战

第三阶段Python 网络与并发编程

章节1:并发编

章节2:网络通信

第四阶段数据库编程基础

章节1:数据库环境搭建

章节2:SQL 语句基础

第五阶段Linux 环境编程基础

章节1:linux 和虚拟机环境配置

章节2:linux 常用命令

章节3:linux 用户和权限管理

章节4:linux 安装软

第六阶段Python 核心特性

章节1:内存管理

章节2:生成器

章节3:函数式编程

章节4:正则表达式

第七阶段网页编程基础

章节1:html5

章节2:CSS 样式

章节3:JavaScript

章节4:jquery

第八阶段Python_Django 框架

章节1:Django 入门

章节2:Django 模型

章节3:Django 视图

章节4:Django 模板

章节5:Django 高级

章节6:Django 集成第三方

章节7:版本管理和 git 使用

章节8:Blog 项目

第九阶段Python_Tornado 框架

章节1:Tornado 简介和使用

章节2:Tornado 深入学习

章节3:Tornado 的模板

章节4:Tornado 数据库操

章节5:Tornado 异步

第十阶段Python_大型电商项目

章节1:电商项目分析和环境配置

章节2:电商项目-商品模块开发

章节3:电商项目-用户管理模块开发

章节4:电商项目-购物车模块开发

章节5:电商项目总结与部署

第十一阶段Python 爬虫开发

章节1:爬虫介绍与常用工具

章节2:爬虫开发常用模块

章节3:数据提取与验证码识别

章节4:scrapy 框架简介与配置

章节5:scrapy 框架高级

章节6:爬虫数据存储

章节5:scrapy 框架高级

章节8:分布式爬虫

本文来自投稿,不代表程序员编程网立场,如若转载,请注明出处:http://www.cxybcw.com/196639.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code