目录
一、认识Python
1.1 Python语言的诞生
吉多·范罗苏姆(Guido van Rossum) 是一个荷兰程序员(人称龟叔,名字前三个字母是 Gui),龟叔在 1989 年圣诞节的时候(当时 33 岁),因为在家里待着无聊, 为了打发时间, 开始了 Python 的开发。
1.2 Python语言的发展历史
- 第一个正式版本发布于 1991 年。
- Python 2.0版本于2000年10月发布。
- 在2008年12月,Python 3.0发布,此版本没有完全兼容之前的Python 2.0。
- Python也因此分为了Python 3.5派系和Python 2.7派系两大阵营。
1.3 Python的用法
经历了多年的发展, Python 目前是一个应用场景非常广泛的编程语言。
- 科学计算&数据分析
- Web 开发(搭建网站)
- 自动化运维
- 人工智能
- 爬虫程序
- 自动化测试
1.4 Python的优缺点
优点:
- 语法言简意赅, 容易上手。
- 功能强大, 用途广泛。
- 生态丰富, 具有海量的成熟第三方库。
- 方便调用 C/C++ 编写的代码进行 高性能/系统级操作。
缺点:
- 执行效率比较弱.
- 对于多核心并发程序支持偏弱.
- 动态类型系统对于大型项目不太友好.
1.5 Python 的前景
虽然 Python 的应用场景很多,但是纯粹使用 Python 的岗位是比较少见的。
更常见到的情况是,把 Python 作为一个辅助性质的语言。
在工作中,Python 更像是一个工具,需要用到的时候随手拿起来就用,能够方便的解决不少问题。
二、Python入门演示
- 字符串是Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
- Python 不支持单字符类型,单字符在Python中也是作为一个字符串使用。
- Python 访问子字符串,可以使用方括号来截取字符
print("Hello World")
print('Hello World')
print('''Hello World''')
在Python中,不是只有用双引号的才是字符串。字符串支持用'或",甚至是'''三引号来创建。
python的三个引号允许字符串跨多行使用,包括换行,TAB和任何其他特殊字符。 三个引号包括单引号和多引号
作用一:用于字符串跨行,不必使用拼接符或换行符,直接使用三个引号即可
multi_line = """ nice to meet you! nice to meet you! nice to meet you! """ print multi_line
作用二:三引号可以用于注释
#!/bin/env python #coding:utf8 ''' @desc: 计算两个数的和 @param a: 加数a @param b: 加数b ''' def sum(a, b): return a + b print sum(1, 2)
下面我们在通过定义变量的形式尝试打印字符串。
var1 = 'Hello World!'
print(var1)
var2 = "Guido van Rossum "
print(var2)
三、切片
我们在C语言里说过字符串实际上可以类似看做一个字符数组,我们可以通过访问下标来找到对应的字母。在Python中也类似是这样,但是记住Python没有字符类型,我们只能说是类比着去理解。
- 切片操作
通过下标操作是一次取出里面第一个元素。
通过切片, 则是一次取出一组连续的元素。
⼀个完整的切⽚表达式包含两个“:”,⽤于分隔三个参数(start_index、end_index、step),当只有⼀个“:”时,默认第三个参数step=1。
start_index:表示起始索引(包含该索引本身);该参数省略时,表示从对象“端点”开始取值,至于是从“起点”还是从“终点”开始,则由step参数的正负决定,step为正从“起点”开始,为负从“终点”开始。
end_index:表示终止索引(不包含该索引本身);该参数省略时,表示一直取到数据”端点“,至于是到”起点“还是到”终点“,同样由step参数的正负决定,step为正时直到”终点“,为负时直到”起点“。
注意:这里的区间是左闭右开的,在计算机编程语言中,大部分涉及到区间的都是左闭右开的,例如C++里涉及的iterator迭代器。
step:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以增量1取值。切取方向非常重要!
#在Python中,我们不再使用//注释,改用#
var1 = 'Hello World!'
print(var1[0], var1[0:]) #H Hello World!
#字符串的索引从0开始,所以var1[0]会返回字符串的第一个字符,即'H'。
#var1[0:]从索引0开始,一直到字符串的末尾。没有指定结束索引,它默认打印到字符串的最后一个字符。
var2 = "Guido van Rossum "
print(var2[1:5], var2[5:8]) #uido va
#var2[1:5]:从索引1开始打印,到索引5结束(不包括索引5)。
#var2[5:8]:从索引5开始打印,到索引8结束(不包括索引8)。
四、列表(简单介绍)
前言:这里我们是为了更进一步介绍切片,提前引入了列表部分,这里只是简单介绍。
编程中, 经常需要使用变量, 来保存/表示数据。
如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可。
但有时,代码中需要表示的数据特别多,甚至也不知道要表示多少个数据。这时就用列表。
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
#切片操作--切取单个值
a[0] #0
a[-4] #从右往左找到第4个元素,也可以理解为从左往右的倒数第4个
#切取完整对象
a[:] # 从左往右
a[::] # 从左往右
a[::-1] # 从右往左
#start_index和end_index全为正(+)索引
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[1:6] #[1, 2, 3, 4, 5]
#从索引1开始,到索引6结束(不包括索引6)。因此,它打印列表a中索引1到索引5的元素
a[1:6:-1] #[]
#step=-1,决定从右往左取值,而1:6决定了从左往右取值
#两者矛盾,因此输出空列表,说明没取到数据
a[6:1] #[]
#step=1,决定从左往右取值,而6:1决定了从右往左取值
#两者矛盾,因此输出空列表,说明没取到数据
a[6:1:-1] #[6,5,4,3,2]
#从索引6开始,到索引1结束(不包括索引1),步长为-1,因此是反向切片
#从列表的末尾开始,反向提取元素直到索引1之前
#start_index和end_index全为负(-)索引
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[-1:-6] #[]
#step=1表示从左往右取值,而-1:-6决定了从右往左取值,两者矛盾
a[-1:-6:-1] #[9, 8, 7, 6, 5]
#step=-1表示从右往左取值,-1:-6也是从右往左取值
a[-6:-1] #[4, 5, 6, 7, 8]
#step=1表示从左往右取值,而-6:-1也是从左往右取值
a[:-6] #[0, 1, 2, 3]
#step=1表示从左往右取值,从“起点”开始一直取到end_index=-6
a[:-6:-1] #[9, 8, 7, 6, 5]
#step=-1表示从右往左取值,从“终点”开始一直取到end_index=-6
a[-6:] #[4, 5, 6, 7, 8, 9]
#step=1表示从左往右取值,从start_index=-6开始,一直取到“终点”
a[-6::-1] #[4, 3, 2, 1, 0]
#step=-1表示从右往左取值,从start_index=-6开始,一直取到“起点”
#start_index和end_index正(+)负(-)混合索引
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a[1:-6] #[1, 2, 3]
#start_index=1在end_index=-6的左边,因此从左往右取值
#step省略,默认为1,也是从左往右取值
a[1:-6:-1] #[]
#start_index=1在end_index=-6的左边,因此从左往右取值
#但step=-1则决定了从右往左取值,两者矛盾
a[-1:6] #[]
#start_index=-1在end_index=6的右边,因此从右往左取值
#step省略,默认为1,从左往右取值,两者矛盾
a[-1:6:-1] #[9, 8, 7]
#start_index=-1在end_index=6的右边,因此从右往左取值
#而step=-1也是从右往左取值
后续敬请期待…………