Python快速入门

如果你缺少编程基础,或者Python是你学习的第一门编程语言请先移步这里阅读电子书。

Python是一种高级的、动态类型的多范型编程语言。Python代码通常被认为是伪代码,因为它允许您在非常可读的几行代码中表达非常强大的思想。作为一个例子,下面是Python中经典的快速排序算法的实现:

Python版本

目前有两种不同的Python版本,分别是2.7和3.5。Python 3.0引入了许多对语言不兼容的更改,因此为2.7编写的代码可能不能在3.5下工作。 您可以通过运行Python-version来检查命令行中的Python版本。

基本数据类型

与大多数语言一样,Python有许多基本类型,包括整数、浮点数、布尔值和字符串。这些数据类型的使用方式与其他编程语言很相似。 数字:整数和浮点数可以从其他语言中得到:

注意,与许多语言不同的是,Python不支持增量(x++)或递减(x--)操作符。 Python也有用于复数的内置类型;您可以在文档中找到所有的细节。

布尔值:Python实现了布尔逻辑的所有常用操作符,但使用的是英语单词而不是符号(&&等等):

字符串:Python对字符串有很大的支持:

String对象有很多有用的方法;例如:

容器

Python包括几个内置的容器类型:列表、字典、集合和元组。

列表 列表是Python的一个数组,但是可以调整,并且可以包含不同类型的元素:

切片(Slicing):除了每次访问列表元素一次,Python还提供了访问子列表的简明语法;这就是所谓的切片:

循环:您可以对列表的元素进行循环/遍历:

如果您想要访问循环体中的每个元素的索引,请使用内置的枚举(enumerate)函数:

列表理解:在编程时,我们经常需要将一种类型的数据转换为另一种类型。作为一个简单的例子,考虑下面的代码计算平方数:

您可以使用列表理解来简化这段代码:

列表理解也可以包含条件:

字典 字典存储(键、值)对,类似于Java中的映射或Javascript中的对象。你可以这样使用它:

循环:在字典中对键进行迭代是很容易的:

如果您想要访问键值(keys)及其对应的值,请使用items方法:

字典的理解:这些类似于列表的理解,但是允许你轻松地构造字典。例如:

集合 集合是不同元素的无序集合。作为一个简单的例子,请考虑以下内容:

循环:在一个集合上的迭代与遍历列表的语法相同;然而,由于集合是无序的,所以您不能对您访问集合元素的顺序作出假设:

集合:像列表和字典一样,我们可以用集合的理解来轻松地构建集合:

元组 tuple是一个(不可变的)有序的值列表。元组在许多方面与列表相似;最重要的区别之一是,元组可以用作字典中的键,也可以作为集合的元素,而列表则不能。这里有一个简单的例子:

方法/函数 Python函数是使用def关键字定义的。例如:

我们通常会定义一些函数来选择可选的关键字参数,比如:

在Python中定义类的语法很简单:

Turtle作图

turtle类用于画图:

Lambda

Lambda表达式是简单的函数:

断言与异常处理

Python3 正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.match(pattern, string, flags=0)

函数参数说明:

参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

以上实例执行结果如下:

matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern, string, flags=0)

函数参数说明:

参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.search方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

以上实例执行结果如下:

searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter

re.match与re.search的区别

re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配。

以上实例运行结果如下:

No match!! search --> matchObj.group() : dogs

检索和替换

Python 的re模块提供了re.sub用于替换字符串中的匹配项。

语法:

re.sub(pattern, repl, string, count=0, flags=0)

参数:

前三个为必选参数,后两个为可选参数。

compile 函数

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

语法格式为:

re.compile(pattern[, flags])

参数:

在上面,当匹配成功时返回一个 Match 对象,其中:

findall

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

注意: match 和 search 是匹配一次 findall 匹配所有。

语法格式为:

re.findall(pattern, string, flags=0) pattern.findall(string[, pos[, endpos]])

参数:

查找字符串中的所有数字:

输出结果:

['123', '456'] ['88', '12']

正则表达式实例

字符匹配

实例描述
python匹配 "python".

字符类

实例描述
[Pp]ython匹配 "Python" 或 "python"
rub[ye]匹配 "ruby" 或 "rube"
[aeiou]匹配中括号内的任意一个字母
[0-9]匹配任何数字。类似于 [0123456789]
[a-z]匹配任何小写字母
[A-Z]匹配任何大写字母
[a-zA-Z0-9]匹配任何字母及数字
[^aeiou]除了aeiou字母以外的所有字符
[^0-9]匹配除了数字外的字符

特殊字符类

实例描述
.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
\w匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
更多有关Python3的详细资料可以移步这里