Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。
缩进
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。缩进成为了语法的一部分。
缩进规则:用缩进表示语句块的开始和退出(Off-side规则),而非使用花括号或者某种关键字———增加缩进表示语句块的开始,而减少缩进则表示语句块的退出。
控制语句
for语句,遍历列表(list)、字符串(string)、字典(dictionary)、集合(set)等迭代器,依次处理迭代器中的每个元素。
try语句。与except,finally配合使用处理在程序运行中出现的异常情况。
def语句。用于定义函数和类型的方法。
pass语句。表示此行为空,不运行任何操作。
raise语句。制造一个错误。
with语句。在一个场景中运行语句块。
import语句。导入一个模块或包。
from import语句。从包导入模块或从模块导入某个对象。
import as语句。将导入的对象赋值给一个变量。
in语句。判断一个对象是否在一个字符串/列表/元组里。
表达式
&, |, ^表示二进制的AND, OR, XOR运算。
and, or, not表示逻辑运算。
is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。
Python使用lambda表示匿名函数。匿名函数体只能是表达式。
Python使用y if cond else x表示条件表达式
Python区分列表(list)和元组(tuple)两种类型。list的写法是[1,2,3],而tuple的写法是(1,2,3)。可以改变list中的元素,而不能改变tuple。在某些情况下,tuple的括号可以省略。tuple对于赋值语句有特殊的处理。因此,可以同时赋值给多个变量。例如:x, y=1,2 #同时给x,y赋值,最终结果:x=1, y=2
Python使用’(单引号)和”(双引号)来表示字符串,并且两种符号作用相同。同时字符串中的(反斜杠)被解释为特殊字符,比如\n表示换行符。表达式前加r表示Python不解释字符串中出现的\,这种写法通常用于编写正则表达式或者Windows文件路径。
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的类型有str, bytes, list, tuple等。
函数
Python的函数支持递归、默认参数值、可变参数,但不支持函数重载。
可以使用内置函数help()打印出函数的使用帮助。
对象的方法
对象的方法是指绑定到对象的函数。
调用对象方法的语法是instance.method(arguments)。它等价于调用Class.method(instance, arguments)。
当定义对象方法时,必须显式地定义第一个参数,一般该参数名都使用self,用于访问对象的内部数据。这里的self相当于C++, Java里面的this变量,但是我们还可以使用任何其它合法的参数名。
Python认识一些以“”开始并以“”结束的特殊方法名,它们用于实现运算符重载和实现多种特殊功能。
类型
与其它面向对象语言一样,Python允许程序员定义类型。
构造一个对象只需要像函数一样调用类型即可,比如,对于前面定义的Fish类型,使用Fish()。
类型本身也是特殊类型type的对象(type类型本身也是type对象),这种特殊的设计允许对类型进行反射编程。
内置类型及数据结构
bytes:一个由字节组成的不可更改的有串行。
int:精度不限的整数。
float:浮点数。精度与系统相关。
complex:复数。
str:一个由字符组成的不可更改的有串行。
list:可以包含多种类型的可改变的有串行。
tuple:可以包含多种类型的不可改变的有串行。
set/frozenset:与数学中集合的概念类似。无序的、每个元素唯一。前者可变,后者不可变。
dict:一个可改变的由键值对组成的无串行。
note:除了各种数据类型,Python语言还用类型来表示函数、模块、类型本身、对象的方法、编译后的Python代码、运行时信息等等。因此,Python具备很强的动态性。