特点:
简单易学;自由开源;高级解释型语言;可移植性;面向对象;可扩展;可嵌入;广泛的库支持。
Note: 简单易学却又无比强大,似乎不太符合逻辑。但不管怎么着,就像只有与一个人打交道才能了解一个人一样,既然选择了 python,那就在学和用中去体会这门语言的特点吧。
基础:
-
字面常量( literal constants ),其值不可改变,就代表它自己。
-
数值类型,有四种类型:整数,长整数,浮点数和复数。
-
字符串
- 引号:单双引号意义一样;三引号可以指定跨行字符串,而且可以穿插单双引号。
- 转义字符:在一些字符前加 back slash 可以构造特殊含义的字符。
- 纯字符串,如果在字符串放在引号中前加 r 或 R 则是纯字符串,不转义。
- 不可修改,字符串不可修改。
- 字符串连接,自动连接两个相邻的字符串。
-
变量
- 定义,内存中的一个片段,给它来个名字,就是变量。
- 命名规则,有字母,数字和下划线组成,不能以数字开头,区分大小写。
-
强制缩进,python 要求强制缩进
操作符和表达式
- 操作符
流控制
- if 语句,if expr: … elif expr: … else: …
- while 语句,while expr: … else: …
- for 语句,for expr: … else: …
- break 语句,用于循环中来中断循环,跳出循环来执行下面的语句。
- continue 语句,跳过当前的这一次循环,继续下次循环。
函数
- 含义,就是一小段预定义的程序,可以在其他地方调用它,代码重用的方式之一。
- 函数参数,传递给函数的变量,函数内部可以处理这些变量。
- 局部变量,在函数内部定义的变量只在函数内生效,函数执行完,变量对应的内存释放,即使函数内外的变量名一样;如果需要更改函数之外的变量用 global 声。
- 默认参数值,在定义形参的时候给它指定个值,这个值就是默认值。
- 关键字参数,直接通过关键值来给参数指定值,其优势在于可以不管参数顺序直接通过关键字来传递参数,这实际上是一种字典数据结构。
- 函数返回值由 return 来指定,pass 表示没有语句执行。
- DocStrings,是在函数中加入文档说明,便于以后理解。
模块
- 含义,代码重用的另一种方式,重用其他一系列的函数或变量,注意其他程序文件扩展名必须是 py。
- 为了执行的高效,通常将 py 文件编译为字节码文件,扩展名是 pyc。
- 尽量避免使用 from … import … 因为可能会导致重名。
- __name__变量用于判断模块是自己运行还是被其他程序调用执行。
- 其实模块就是一个程序,只是它自有定义部分没有执行部分。
- dir 方法可以列出当前模块中定义的所有标识符,包括变量和函数
数据结构
-
含义,组织数据的方式。
-
列表(list)用于有序的存放一组项目;格式如下[,];用 list[n]来检索 list 中的值。
-
元组(tuple)和列表的区别是元组不可修改。
- 通过元组来传递变量,print 语句要输出多个变量时,通常先把他们放到元组中再传递给 print。
-
字典(dictionary)就像一个地址本,用关键值来获取对应的值。
-
序列(sequence),包括列表,元组和字符串;通过索引操作获取序列中的项目;通过切片(slice)操作符来获取序列的部分项目。
-
参考(reference)类似链接,变量仅是对象的连接,修改了对象所有链接到该对象的变量都会改变,所以直接赋值有时候会有问题,解决方法是用切片操作符来复制对象。
面向对象编程
-
术语
- 类和对象,类创建了一种新的类型,对象是类的一个实例。
- 区域,在一个类或实例中的变量叫区域,又分两种类变量和实例变量。
- 方法,在一个类中的函数叫方法。
- 属性,区域和方法的统称。
- 创建类,class name: …
-
self,类的方法与普通函数的区别是类的方法第一个参数是 self,这个特别的参数是指对象本身。这也是类或者对象的方法和函数的中重要区别。
-
__init__方法和__del__方法,两个特殊的方法,一个是在创建对象时执行,一个是对象释放前执行。
-
继承,代码重用的另一种方式
- 父类称为超类(superclass)或者基本类(base class),子类称为派生类(deruved class)或者子类(subclass)
- 就是父类和子类的关系,修改父类的属性子类也会跟随改变,但修改子类的属性不会影响到父类和其他子类。
- 创建类的时候声明继承关系,class subclass_name(superclass ): … 这里在子类定义时后跟一个父类的 tuple。
- Python 不会自动调用 baseclass 的__init__方法,你需要手动通过 self 变量调用它。
-
多态,一个子类在任何需要父类的场合(比如子类定义的方法需要调用父类的方法时)都可以被替换成父类,也就是子类的对象可以被当作父类的对象,这种现象叫多态。
Input 和 Output
- 文件,初始化一个文件实例,然后调用文件类的相关方法来操作文件,最后用 close()关闭文件。
- print 语句中可以通过最后加“,”来去掉最后默认添加的换行符。
- pickle 或者 cpickle 用来将对象“存储”到文件中和从文件中“取存储”。
异常
- 异常发生在程序出错的情况。
- 用 try … except 语句来处理异常。
- 用 raise 引发异常,但要注意要指明异常或错误的类名称和对象,可以引发的错误和异常是 Error 和 Exception 类直接或间接导出的类。
- 用 try … finally 来处理发生异常后要执行的操作。
标准库
- 得参考官方库手册来学习了。
其他
- 特殊方法
- 即使单语句块也最好使用缩进格式。
- 定义函数时通过*收集所有多余参数到列表中,如 funame(arg1, *agrs),如果是**责多余的参数会被认为是键值对。
- exec 用来执行字符串中的 python 语句,eval 用来计算字符串中的表达式的值。
- assert 断言,如果断言不成立就会触发异常。
- repr 用来获取对象的规范字符串表示。
Principle
- writing a single logical line in a single physical line only