Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.
一种解释型的、面向对象的、带有动态语义的高级程序设计语言。
Jan. 2016 Python|Codecademy
Codecademy是一个在线、互动的编程学习平台。简短有趣的过关式的课程可以使初学者很快地了解一门语言的概况,并且动手敲一下基础用法的相关代码。我的Html&CSS和Python入门之旅都在此网站度过的。
Python课程学了五天,主要是Python的基本知识:
+ Python Syntax
+ Strings and Console Output
+ conditional and Control Flow
+ Functions
+ Lists and Dictionaries
+ Loops
+ Introduction to Classes
+ File Input and Output
免费的课程较简单、易完成,学完Codecademy的课程可以找本深度点的书对照着看,这样子没那么乏味。(另外,付费版的课程还有Quizzes和Projects,应该可以加深理解和锻炼。)
Feb. 2016 《Python 基础教程(第2版)》
此书为《Begining Python From Novice to Professinal(Second Edition)》的中译本。书中对Python从语法到编译打包、从测试到GUI程序均有介绍和实例,最后还有10个项目作为练手。适合有一定编程语言基础的入门初学者(此前我学过C++),当然没有编程基础的看慢点也没问题。
光看书是有点枯燥,所以自己写了一个小小的爬虫程序——根据关键词爬取学院网的新闻,并接入了微信订阅号。其中主要用到了urllib、urllib2(Python3.x两者整合了)、re、BeautifulSoup、web、lxml等库。标准库在官方文档都有介绍到,而像Web、BeautifulSoup这样比较知名的第三方库也有自己的主页和开发文档(有中文版的!)。要注意的是,有些第三方的库还没跟上Python3.x的脚步,有不兼容的地方。
我觉得有个很好的地方是,这些库的开发文档都包含有Beginner tutorial和Advanced,通常你看完tutorial就可以了解这个库中常用的函数和功能,易上手。这应该是Python快速开发的原因之一吧。
在动手写代码、测试的时候,体会了Python的两个大坑!一是Python3.x不向下Python2.x兼容,二是Python的中文编码问题。为此折腾了很久,想想真是泪流满面啊。
Dec. 2016 Python|图像处理
有一个课程设计,要做图像融合和字符分割,第一时间想到了Python,因为其拥有丰富的图像处理第三方库。参考书目《Python计算机视觉编程》(Programming Computer Vision with Python. by Jan Erik Solem)。
图像融合采用了空间域直接加权融合,字符分割就用了阀值分割和垂直投影的方法,都是很简单、基础的方法,但效果可用。引用了PIL、NumPy、scikit-image等图像处理库,它们官网上都有详细的API document和Examples。
这些库都有相应的依赖包,在windows平台下安装比较麻烦。建议使用Anaconda集成安装包,集成了常用的科学计算、图像处理的库。默认使用类Matlab的IDE spyder。
在设计GUI的时候,参考了《2014辛星tikinter教程第二版》。作者介绍了tkinter的用法和几个例子,而且作者的看源码学习库的方法也值得大家学习。
Feb. 2017 OpenCV-Python
OpenCV是一个基于BSD许可发行的计算机视觉库。它主要是由C语言编写的,轻量高效,而且它也提供了Python和Matlab的接口。毕业设计是图像分割相关,选用 Python 3.5.2 + OpenCV 3.2。OpencvCV 内置了很多算法,方便调用,初期调研算法的时候,可以很快写出 demo 再调试。不过我做的这个图像分割追求效率,在确定方案后可能要换到 C++ 平台。
参考资料:
+ Python3.4+opencv3 - 航飞冲天 - 博客园
+ OpenCV-Python Tutorials
+ OpenCV-Python 中文版教程
未完待续,仍需努力。
我平时用R,最近也打算学一些python了。Dataquest上的课程也很不错,推荐你看看。
@Dong 谢谢推荐!R语言是不是在科研中用的比较多?我回看了你的博客。