记录以下这几天的收获和心得(10-12号)
命令行交互范式(以 docopt 为例)
- (--command-A | --command-B) 必选其一的互斥参数
- <A> <B> <C> 必须要有的参数
- 方括号内为可选参数
- <A>... 表示列表参数
其中带 -- 表示真假参数
以上是命令行参数设置的基本方法之一,重要的内核是其中的命令区分和安排方式,官方 argparse 虽然不够优雅,但是对于了解命令行参数设置的基本思想很有帮助,如果以后用到,需要加深理解,可以从这两个库入手。
此外,刚好对 *args and **kwargs 参数有了一个实例参考,明白了这两个参数的用途。
单元测试用 unittest 库
虽然自己没怎么用,但这很重要,要在恰当的时候用起来。
Python2 兼容性的配置
善用以下兼容库:
- from __future__ import absolute_import
- from __future__ import division
- from __future__ import print_function
- from __future__ import unicode_literals
可以看出来,三个很明显的区分,除法定义的不同,打印函数的变化,以及字符串默认为unicode字符集。
生成器
Python 中有很多抽象的很好的概念,那些概念对于我这样的没有其它编程经验的新手,刚遇到简直是一脸懵逼。但是不要慌,在实际动手做自己的项目时,很多的知识点会涉及,这个时候会有一个理解『抽象概念』的上下文。这不,我这几天因为实际的需求对生成器有了初步了解,也能简单应用了。
可以说,编程语言中的或是模块中的或是业务中的任何一种概念,背后都有其实际应用场景。要时刻准备将一个个概念和场景对接起来,完成知识架构的升级。
想法小结
这几天的学习还算有些味道,有收获的感觉,但依然路漫漫。能意识到自己的问题很多,下面列举一下:
- 思维过于轻挑,不够踏实,对于一个『学习对象』,理应做到的是方方面面的了解和掌握(在所需要的 level of detail 上)。这个过程是一个慢慢进步的过程,但心中要有数,要大概明白自己掌握了哪些,需要掌握哪些,哪些还没有掌握。等等。
- 对于『一件事情』本身的看待方式不够成熟,现实中的事情,都是 bug 丛生的,有各种异常需要处理。可以说,编程非常像现实中这些事情。而且编程两大属性:一是事无巨细的一点一点地完成;二是整个完成任务划分为了一个个的层级,每一个层级相互独立,为了完成层级之间的无缝隙合作,除了实现概念中的逻辑以外,还要对各种异常做出保护性措施。成为一个个可以自我维持的闭包,自己的问题自己一定要解决。
- 缺乏各种经验,这个要使劲花时间去试错。
可以说,自己的自学编程之旅进入到了一个很关键的阶段。在这个阶段,自己的主线是深入理解 Web 后端开发,一方面阅读优秀的项目和 Flask 源码,一方面动手实践,如此配合,获得足够的第一手经验。副线是对 Python 语言的自身高级特性和自带库慢慢覆盖性了解和初步把握。
不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。