Python从入门到转行

10,093 阅读6分钟
原文链接: segmentfault.com

题记:大二的时候发现人生苦短,所以信了拍神,开始学Python。学了大半年之后成功转行做前端了。来写个教程帮助大家入门Python。

Python零基础入门

零基础入门就得从最基本的变量,语法格式,数据类型,函数,作用域,模块等基本知识入手(有编程基础基础也得这么来)

和篮球一样,先来三步上篮:

  1. Python基础知识入门,从程序基础开始学,能看懂代码就可以了。三种选择:
    第一种:找一本Python入门教程书,比如《Head First Python 中文版 》《笨办法学Python 》《简明 Python 教程》。Head First系列书籍都非常简单易懂,适合文科生看,从最基本的东西讲起,有编程基础的同学看着会觉得幼稚。另外两本都是普通入门书,随便选。一些Python相关电子书下载, 密码: yjw3。
    第二种:看网站入门教程,很多人推荐的廖雪峰Python教程
    第三种:视频教程,推荐慕课网。其他还有网易云课堂,学堂在线(这个里边大学课程比较多)
  2. 学写一些基本的Python程序,上述《简明 Python 教程》后边的示例可以做。想更进一步掌握基础,可以做一点leetcode easy题目练练手。(看个人情况呗,反正我是没那个耐心,做题实在太枯燥,虽然写题是很有好处的)
  3. 做一些感兴趣的小项目,这里有Python习题100例,很基础。觉得不够高大上可以玩实验楼里的项目,实验楼是个不错的网站,可以做一些很好玩的东西。

以上三步可以让你21天精通Python哟

Tips:推荐一个神器,Python运行可视化,可以一步步查看程序运行状态,变量状态,函数调用,内存分配,对于理解变量生命周期,作用域,调试理解程序非常有帮助。
开发工具:推荐Pycharm,有免费社区版,也可用edu邮箱注册专业版。

Python进阶篇

进阶就是专注于Python的某个领域做深入研究了,Python主要包含了AI领域(NLP,深度学习,图像处理啥的,反正无所不能),Web开发(后端服务,爬虫),数据处理(数据分析,科学计算),工具(比如读写Excel,编写自动化脚本),桌面开发(GUI工具)等等。Python好强大啊,我又想写Python了。

下面简单写写我知道的领域的入门:

Web开发

Python Web框架众多,是建网站的利器。对于建立不太复杂的CMS系统(比如新闻网站,博客网站),Django强到没朋友,开发效率无敌。对于注重灵活性的网站,Flask可以作为首选,灵活而小巧,非常优雅的框架。

  1. Django入门先看官方文档,了解基本概念。然后开始做实际项目,比如Django开发博客系统教程
  2. Flask入门看官方文档,同Django。

爬虫(网络数据获取)

先科普,网络爬虫,可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到资源,那么它就会抓取下来。比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。简单地说,利用程序从网页上获取你想要的数据。
Python的爬虫框架非常多,也非常好用。
入门步骤:

  1. 理解网页是怎么构成的
    网页的基本知识包括:
    基本的HTML语言知识
    理解网站的发包和收包的概念(POST GET)
    稍微一点点的js知识,用于理解动态网页
  2. 解析网页,这里需要学习正则表达式
  3. 选取一个爬虫框架,比如自带的urllib,request,bs4等等
  4. 看官方文档,如何使用框架,然后就可以养一只爬虫咯。

教程点这里

数据处理

上边爬虫讲到如何获取数据,这里将学习如何分析处理数据,教程链接
科学计算,数据处理用到比较多的是matlab,无所不能的Python当然也可以替代它。
numpy pandas是科学运算当中最为重要的两个模块。Matplotlib 是一个非常强大的 Python 数据可视化工具,绘制各种图形。

  1. 看官网文档,理解这个库的基本用法。
  2. 学习一些简单的项目,上文提到的实验楼也可以用

AI领域

略从别处引用一点基本介绍

  1. Theano 是一种用于使用数列来定义和评估数学表达的 Python 库。它可以让 Python 中深度学习算法的编写更为简单。
  2. Keras 是类似 Torch 的一个精简的,高度模块化的神经网络库。Theano 在底层帮助其优化 CPU 和 GPU 运行中的张量操作。
  3. Pylearn2 是一个引用大量如随机梯度(Stochastic Gradient)这样的模型和训练算法的库。它在深度学习中被广泛采用,这个库也是以 Theano 为基础的。
  4. Lasagne 是一个轻量级的库,它可以在 Theano 中建立和训练神经网络。它简单、透明、模块化、实用、专一而克制。
  5. Blocks 是一种帮助你在 Theano 之上建立神经网络模型的框架。
  6. Caffe 是一种以表达清晰、高速和模块化为理念建立起来的深度学习框架。它是由伯克利视觉和学习中心(BVLC)和网上社区贡献者共同开发的。谷歌的 DeepDream 人工智能图像处理程序正是建立在 Caffe 框架之上。这个框架是一个 BSD 许可的带有 Python 接口的 C++库。
  7. nolearn 包含大量其他神经网络库中的包装器和抽象(wrappers and abstractions),其中最值得注意的是 Lasagne,其中也包含一些机器学习的实用模块。
  8. Genism 是一个部署在 Python 编程语言中的深度学习工具包,用于通过高效的算法处理大型文本集。
  9. CXXNET 是一种快速,简明的分布式深度学习框架,它以 MShadow 为基础。它是轻量级可扩展的 C++/CUDA 神经网络工具包,同时拥有友好的 Python/Matlab 界面,可供机器学习的训练和预测使用。

这里包含的东西太多了,基本学习方法如上。

附录:

先来看看Python有多强大,不然不能被它所吸引,就学不下去了。
20行代码实现人脸检测与识别:
face_recognition可以通过python或者命令行即可实现人脸识别的功能。使用dlib深度学习人脸识别技术构建,在户外脸部检测数据库基准(Labeled Faces in the Wild)上的准确率为99.38%。

# 导入识别库
import face_recognition
# 加载已有的图片作为图像库
known_obama_image = face_recognition.load_image_file("face1.jpg")
known_biden_image = face_recognition.load_image_file("face_kid.jpg")
# 编码加载的图片
obama_face_encoding = face_recognition.face_encodings(known_obama_image)[0]
biden_face_encoding = face_recognition.face_encodings(known_biden_image)[0]
known_encodings = [
    obama_face_encoding,
    biden_face_encoding
]
# 加载要识别的图片并编码
image_to_test = face_recognition.load_image_file("face2.jpg")
image_to_test_encoding = face_recognition.face_encodings(image_to_test)[0]
# 计算该图片与已有图片的差别值
face_distances = face_recognition.face_distance(known_encodings, image_to_test_encoding)
# 自行设定同一张面孔的分界值,输出比对结果 
for i, face_distance in enumerate(face_distances):
    print("The test image has a distance of {:.2} from known image #{}".format(face_distance, i))
    print("- With a normal cutoff of 0.6, would the test image match the known image? {}".format(face_distance < 0.6))
    print("- With a very strict cutoff of 0.5, would the test image match the known image? {}".format(face_distance < 0.5))
    print()