高赞已经给出了很多学习的资源,在这里我梳理了学习python基本路线中,每个模块可能遇到的问题和自学需要注意的点,如下:
(1)环境搭建
pycharm是首选,但是考虑到笔记本性能,建议安装notebook。notebook不仅小巧轻便,更能帮助我们更好的记录自己敲过的代码,起到编程笔记本的作用。
(2)输入输出
刚入门敲代码,一定要学会“通过print进行调试”,我初学时基本上每写几行代码就要print一下,确保自己知道自己写的代码是什么意思(尽管这不是高级的调试方式)。
(3)多练习列表
list是python中非常重要的基本数据结构,如果仔细学习过《数据结构》这门课,就会发现python中的list实际上是高度封装的。练习包括:列表创建、索引、修改、切片、插入、反转、深复制和浅复制等等。
(4)什么是if语句
初学python时,逻辑判断绝对是难点之一。日常语言中,很少会出现一个如果后面跟着多个备选项的情况。所以,需要弄清不同条件之间的互斥或关联,理解为什么if可以对一个问题的多个情况进行判断选择。
(5)循环要在什么情况下使用?
书中一般都会说明while语句如何使用,并且给出几个while语句的几个使用实例。那么,while应该在什么情况下被使用呢?我的理解是,在总问题可以通过重复求解子问题时获得最终解答时,就可以尝试用while或for。当然,还是要多积累经验,看看别人在哪些情况下使用的。
(6)不知道什么是函数怎么办?
由于我在学python之前就已经学习C和C++了,所以函数这个概念困扰我是在很久以前了。但是,对于初学者,函数这个概念可能会莫名其妙,究竟什么时候需要定义函数?函数内部需要包含哪些功能?我的理解是:如果某个单一的功能可以通过多行代码实现,那么就把这些代码放在一起。这里面“单一”是个很重要的约束,如果函数中实现了两种功能,那么就要把它拆分成两个函数。
(7)python是面向对象的吗?
有人说python是面向对象的编程语言,也有人说python中万物皆对象。如果将Dog、Cat和Animal这种抽象为类的概念,是容易接受的,并且频繁的将对象作为函数参数传递是有益的。那么,为什么迭代器函数也可以作为参数传递呢?为什么generator也有状态呢?python中某些概念的边界让我很头痛。我的理解是,不要用C++的角度看python,python只是一门胶水语言。
如果有人看,我在续更。