目录
一、Python 初识
1、Python 的优势
2、Python 的特性
3、Python 的应用领域
二、Linux 环境中安装 Python
1、下载 Python3.11.6
2、安装依赖包
3、解压 Python 压缩包
4、安装 Python
5、编译及安装
6、建立软链接
7、测试 Python3 运行
8、设置国内 pip 更新源
9、更新 pip 版本(必须更新)
三、Windows 系统中安装 Python
1、安装 Python 程序
(1)双击python 安装包 python-3.11.6-amd64
(2)安装完成的界面
2、安装 vscode 编译器
(1)双击安装包VSCodeUserSetup-x64-1.85.0,进入安装界面
(2)设置安装路径
(3)选择开始菜单文件夹
(4)选择附加任务
(5)开始安装
(6)安装完后直接开始运行
3、安装 vscode 插件
(1)简体中文
(2)安装 python 插件
4、设置国内更新源
四、Python 语法基础
1、标识符
2、Python 保留字
3、注释
(1)单行注释
(2)多行注释
4、语句与缩进
(1)语句
(2)代码块
(3)多行语句
5、pass 语句
五、Python 常用的数据类型
1、数字
(1)整型和浮点型
(2)布尔型
(3)Python 运算符
2、字符串
(1)字符串使用
(2)使用字符串注意事项
①单引号、双引号、三引号都是成对出现的
②如果字符串种出现单独出现单引号或双引号,可以使用另一种引号定义。
③当字符串中出现单引号、双引号等特殊字符时,还可以使用转义字符定义
(3)字符串的其他用法
3、列表
(1)列表的定义
(2)列表的取值
①列表中的数据是有序的,按第定义是的顺序拍好,可以单独取出来某一位置元素的数值。
②获取列表指定范围的一组元素
(3)修改列表元素值
(4)添加列表元素
①把一个元素添加到列表的最后
②在列表指定位置前插入新的元素
(5)删除列表元素
(6)查找列表元素
(7)合并列表
(8)重复列表
(9)列表常见问题
①索引越界
②负值索引
③当获取列表指定范围的一组元素时,不存在列表索引越界的问题
④获取列表指定范围时可以同时使用正数和负数索引
⑤列表元素也可以是列表
一、Python 初识
1、Python 的优势
Python 易于使用,是一门完整的编程语言;与 Shell 脚本或批处理文件相比,它为编写大型程序提供了更多的结构和支持。第二,Python 提供了比 C 更多的错误检查,并且作为一门高级语言,它内置支持高级的数据结构类型,例如:灵活的数组和字典。因其更多的通用数据类型,Python比 Awk 甚至 Perl 都适用于更多问题领域,至少大多数事情在 Python 中与其他语言同样简单。
Python 允许将程序分割为不同的模块,以便在其他的 Python 程序中重用。Python 内置提供了大量的标准模块,可以将其用作程序的基础,或者作为学习 Python 编程的示例。这些模块提供了诸如文件 I/0、系统调用、Socket 支持,甚至类似 Tk 的用户图形界面(GUI)工具包接口。
Python 是一门解释型语言,因为无需编译和链接,所以可以在程序开发中节省宝贵的时间。Python 解释器可以交互的使用,这使得试验语言的特性、编写临时程序或在自底向上的程序开发中测试方法非常容易。你甚至还可以把它当做一个桌面计算器。
注:Tkinter(也叫 Tk 接口)是 Tk 图形用户界面工具包标准的 Python 接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。
2、Python 的特性
Python 让程序编写的紧凑和可读。用 Python 编写的程序通常比同样的 C、C++或 Java 程序更短小,这是因为以下几个原因:
- 高级数据结构使用户可以在一条语句中表达复杂的操作。
- 语句组使用缩进代替开始和结束大括号来组织。
- 变量或参数无需声明。
3、Python 的应用领域
Python 是一种通用编程语言,具有广泛的应用领域。如下领域:
数据科学和机器学习
Web开发
自动化测试
网络爬虫
游戏开发
数据分析
数据可视化
二、Linux 环境中安装 Python
1、下载 Python3.11.6
以3.11.6版本的python为例,可在Python 的官方网站下载,网址为 http://www.python.org。
2、安装依赖包
[root@localhost ~]# dnf -y install gcc zlib zlib-devel libffi libffi-devel
#安装源码编译需要的编译环境
[root@localhost ~]# dnf -y inatall readline-devel
#解决后期出现的方向键、删除键乱码问题、这里提前避免
[root@localhost ~]# dnf -y install openssl-devel
3、解压 Python 压缩包
[root@localhost ~]# tar xvf Python-3.11.6.tar.xz
4、安装 Python
[root@localhost ~]# cd Python-3.11.6
[root@localhost Python-3.11.6]# ./configure --prefix=/usr/local/python3
可选配置项 | 含义 |
--enable-optimizations | 用 PROFILE_TASK 启用以配置文件主导的优化(PGO) |
--with-lto | 在编译过程中启用链接时间优化(LTO) |
--enable-shared | 启用共享Python库libpython 的编译 |
--with-ssl | 编译安装 ssl模块到Python3 中(默认) |
5、编译及安装
[root@localhost Python-3.11.6]# make && make install
如果主机上已经安装有其他版本的 python3,注意是3的版本,要使用 altinstall 而不是install 。二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令链接到正在安装的新版本 Python 3上,这可能会破坏系统。如果是 python2的版本,不会有此影响。
6、建立软链接
[root@localhost Python-3.11.6]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@localhost Python-3.11.6]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
7、测试 Python3 运行
[root@localhost Python-3.11.6]# python3
Python 3.11.6 (main, Dec 18 2024, 22:06:12) [GCC 12.3.1 (openEuler 12.3.1-62.oe2403sp1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hello world')
hello world
>>> exit()
[root@localhost Python-3.11.6]#
注:Ctrl+D 或exit() 退出
8、设置国内 pip 更新源
[root@localhost Python-3.11.6]# cat <<EOF>> /root/.config/pip/pip.conf
> [global]
> index-url = http://mirrors.aliyun.com/pypi/simple/
>
> [install]
> trusted-host=mirrors.aliyun.com
> EOF
注:使用以下命令也可以
pip3 config set global.index-url http:://mirrors.aliyun.com/pypi/simple
pip3 config set install.trusted-host mirrors.aliyun.com
9、更新 pip 版本(必须更新)
[root@localhost ~]# pip3 install --upgrade pip
注:安装结束后可以做一个快照。
三、Windows 系统中安装 Python
1、安装 Python 程序
(1)双击python 安装包 python-3.11.6-amd64
(2)安装完成的界面
2、安装 vscode 编译器
在 Linux 系统中,可以直接使用 vi 编辑器对 Python 代码进行编写,在 windows 系统中,Python提供了 IDLE 编译器,但是使用起来很不友好,可以安装一个 vscode 编译工具,对 Python 进行编译。
安装过程如下:
(1)双击安装包VSCodeUserSetup-x64-1.85.0,进入安装界面
(2)设置安装路径
(3)选择开始菜单文件夹
(4)选择附加任务
(5)开始安装
(6)安装完后直接开始运行
3、安装 vscode 插件
(1)简体中文
可以先安装一个简体中文的插件
(2)安装 python 插件
如图所示点击 Extentions(扩展)按钮,在搜索区域输入“python”,然后选择 Python 插件进行安装,有了这个插件,就可以在 vscode 中编辑 python 代码了。
注:用同样的方法可以安装一个“black format”插件,该插件可以使用“Shift+AIt+F”组合键对 Python 代码进行格式化的处理,自动整理代码的书写规范,让代码看上去更美观。
4、设置国内更新源
pip config set gloobal.index-url http://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com
pip install --upgrade pip
四、Python 语法基础
1、标识符
所谓的标识符就是对变量、常量、函数、类 等对象起的名字。
首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不同,python 对于表示标识符的命名有如下规定:
- 标识符的长度不受限制,但其中的字符必须是字母、数字、或者下划线(_),而不能使用空格、连字符、标点符号、引号或其他字符。
- 标识符的第一个字符不能是数字,而必须是字母或下划线。
- Python 区分大小写。
- 不能将 Python 关键字用作标识符。
例如:a, abc ,_id,等都是可以的。但是例如: $a(以$开头的是 PHP 的变量语法),~abc,123a 都是不可以的。这一点一定要注意。
可能有人会问,中文可以作为标识符吗?答案是可以的。
2、Python 保留字
Python 保留字,也叫关键字,是 Python 语言官方确定的用作语法功能的专用标识符,不能把它们用作任何自定义标识符名称。关键字只包含小写字母。可以通过 python 提供的库输出这些关键字:
Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字。如下:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
3、注释
(1)单行注释
Python 中,以符号“#”为单行注释的开始,从它往后到本行的末尾,都是注释内容。语法如下:
# 单行注释
(2)多行注释
Python 没有真正意义上的多行注释(块注释),语法如下:
# 第一行注释
# 第二行注释
# 第三行注释
4、语句与缩进
(1)语句
在代码中,能够完整表达某个意思、操作或者逻辑的最短代码,被称为语句。这里强调一下,python 的标准语言不需要使用分号。简单的换行就表示语句已经结束。
>>> a=123
>>> b=456
>>> print("hello world")
(2)代码块
为完成某一特定功能而联系在一起的一组语句构成一个代码块。有判断、循环、函数、类等各种代码块。代码块的首行通常以关键字开始,以冒号(:)结束。
比如:
a=10
if a>5:
print("a大于5")
else:
print("a小于a")
Python 最具特色的语法就是使用缩进来表示代码块,不需要使用大括号像 PHP 、JAVA 等语言都是使用({})来表示代码块的。python 一般用四个空格来缩进。在pycharm或vscode 中tab 自动回转成 4个空格。在 Linux 环境中,如 VIM 编辑器,建议使用空格。
(3)多行语句
前面的例子中都是多条语句在同一行,但如果一条语句实在太长,也是可以占用多行的,可以使用反斜杠(\)来实现多行语句。
>>> print("ni hao\
... wo de ming zi \
... jiao zhang san")
执行结果:
ni haowo de ming zi jiao zhang san
5、pass 语句
pass 语句是占位语句,它什么都不做,只是为了保证语法的正确性而写。以下场景中,可以使用 pass语句:
- 当你不知道后面的代码怎么写的时候
- 当你不需要写代码细节的时候
- 当语法必须,又没有实际内容可写的时候
- 其它的一些你觉得需要的场景
a=10
if a>5:
print("a大于5")
else:
pass
五、Python 常用的数据类型
Python 内置的数据类型有数字、字符串、元组、列表和字典。
1、数字
数字类型包括整型、浮点型、布尔型等,声明时由 Python 内置的基本数据类型管理变量,在程序的后台实现数值与类型的关联,以及转换等操作。根据变量的值自动判断变量的类型,程序员不需要关心变量空间是什么类型,只需知道创建的变量中存放了一个数,通过编码对这个数值进行操作即可。
(1)整型和浮点型
整数使用整型表示,有小数点使用浮点型表示。
例1:为变量赋予整型和浮点型的数值
>>> x=123
>>> print(x)
123
>>> x=1.98
>>> print(x)
1.98
在以上代码中,首先定义了变量 x=123。此时的 x值是整数,x 即是整型变量。当执行语句x=1.98 时,x又成为了浮点型变量,由此可以看出,变量的类型是能改变的,与 Java、C#语言等是有区别的。这是因为当 Python 给已经存在的变量再次赋值时,实际上是创建了一个新的变量,即使变量名相同,但标识并不相同,变量的标识可以使用 id 函数输出。
(2)布尔型
布尔型是用于逻辑运算,有2 个值 True、False,表示真和假。
例2:为变量赋布尔型数值
>>> f=True #注意大小写
>>> print(f)
True
>>> if(f):
... print(1) #注意...后有个空格
...
1
代码定义了变量 f=True。if 是判断语句,为真则执行 print 语句,最后输出的是 1,说明语句执
行成功。
使用比较运算符返回的结果是布尔值。
例3:获取比较运算符的运算结果
>>> 3>4
False #假
>>> 4.15>2.1
True #真
(3)Python 运算符
Python 中使用的算术运算符和数学运算中使用的符号基本相同,由+、-、*、/(加、减、乘、除)和小括号组成,运算顺序也是先乘除后加减、小括号优先。
例 4:四则运算
>>> 3>4
False
>>> 4.15>2.1
True
>>> x,y=10,2
>>> print(x+y,x*y,x/y,x-y)
12 20 5.0 8
>>> print(5+8*3)
29
>>> print((5+8)*3)
39
>>> print(5+8*3/4)
11.0
Python 还有两个算术运算符是%和**,分别是求模运算和求幂运算。
求模运算取余数,求幂运算是计算累乘的结果。
例5:求模和求幂运算
>>> print(x%y)
0
>>> print(x%44)
10
>>> print(x%4)
2
>>> print(x**y)
100
>>> print(y**x)
1024
2、字符串
Python中的字符串类型是一组包含数字、字母和符号的集合,作为一个整体使用。
(1)字符串使用
在Python 中有3种表示字符串的方式,单引号、双引号、三引号。
例6:Python 字符串的 3 种表示方式
>>> name='zhangsan'
>>> address="lisi"
>>> content='''wangwu'''
>>> print(name)
zhangsan
>>> print(address)
lisi
>>> print(content)
wangwu
在上例中,变量 name 使用单引号,变量 address 使用双引号,变量 content 使用三引号,它们都是合法的 Python 字符串类型。需要注意的是,单引号和双引号作用是一样的, 可以根据习惯使用。但定义多行文字时,必须要使用三引号。
(2)使用字符串注意事项
字符串的定义方式单引号、双引号、三引号大部分情况下作用是相同,但在特殊情况中使用也有所区别,下面列出需要注意的地方。
①单引号、双引号、三引号都是成对出现的
如果以单引号开头就要以单引号结尾,不能混合使用表示字符串。
如下代码就会报错:
>>> name="zhangsan'
File "<python-input-37>", line 1
name="zhangsan'
^
SyntaxError: unterminated string literal (detected at line 1)
>>> name="zhangsan'''
File "<python-input-38>", line 1
name="zhangsan'''
^
SyntaxError: unterminated string literal (detected at line 1)
②如果字符串种出现单独出现单引号或双引号,可以使用另一种引号定义。
例7:使用引号定义字符串的值
>>> title1="let'go!" #双引号定义
>>> print(title1)
let'go!
>>>
>>> title2='let"go!' #单引号定义
>>> print(title2)
let"go!
>>>
>>> title3='''let'go! let"go!''' #三引号定义
>>> print(title3)
let'go! let"go!
字符串变量 title1 中出现了单引号,需要使用双引号定义,字符串变量 title2 中出现了双引号,需要使用单引号定义。当字符串中同时出现单引号和双引号,就需要使用三引号进行定义。
③当字符串中出现单引号、双引号等特殊字符时,还可以使用转义字符定义
Python中的转义字符是”\“,只要在特殊字符前面加上”\“,就可以输出原字符,而不需要关注定义字符串使用的是单引号还是双引号。
例8:使用转义字符为字符串赋值
>>> title='let\'go!' #转义字符单引号
>>> print(title)
let'go!
>>>
>>> title="let\"go!" #转义字符双引号
>>> print(title)
let"go!
注:Python 的常用转义字符
转义字符 | 作用 |
\(在行尾时) | 续行符 |
\\ | 反斜杆符号 |
\` | 单引号 |
\" | 双引号 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
(3)字符串的其他用法
Python 的字符串可以进行乘法(*)的操作,使用一个整型数字和字符串相乘。
例如用数字 3 乘字符串“a”,结果是字符串”aaa”,等同于将字符串“a”连接了 3 遍,代码和运行结果如下:
>>> print(3*'a')
aaa
3、列表
列表(list)是 Python 中非常重要的数据类型,通常作为函数的返回类型。
由一组元素组成,列表可以实现添加、删除和查找操作,元素值可以被修改。
(1)列表的定义
列表是Python 内置的一种数据结构,由中括号”[]“定义,,元素以逗号分开,语法如下:
列表名=[元素1,元素2,...]
(2)列表的取值
①列表中的数据是有序的,按第定义是的顺序拍好,可以单独取出来某一位置元素的数值。
语法:
列表名[索引位置]
例9:使用列表保存元素的数值,并输出
>>> num=[1,2,3]
>>> num=[1,2,3,4,5]
>>> print(num)
[1, 2, 3, 4, 5]
>>> print(num[0])
1
>>> print(num[1])
2
>>> print(num[2])
3
>>> print(num[3])
4
>>> print(num[4])
5
在上述代码定义的列表 num 中,存储有五个字符串,其顺序是1、2、3、4、5,取值时用列表名 num 加上中括号,数字表示索引位置。
注:列表中元素的是由 0 开始,以 1 为单位依次递增。
②获取列表指定范围的一组元素
语法:
列表名 [起始位置:终止位置]
可以输出起始位置到终止位置前的元素,不包括终止位置。
例10:输出列表中指定位置的元素
>>> num=[1,2,3,4,5]
>>> print(num[0:1])
[1]
>>> print(num[0:2])
[1, 2]
>>> print(num[0:3])
[1, 2, 3]
>>> print(num[1:2])
[2]
>>> print(num[1:3])
[2, 3]
>>> print(num[2:5])
[3, 4, 5]
在上例中,num 列表后的[0:1]表示获取由索引 0 开始至索引位置 1 之前的元素,所以只能取到第 1 个元素;而[0:2]则可以取到索引 2 之前的元素,其它的与此相同。
(3)修改列表元素值
语法:
列表名[索引位置]=值
例11:修改列表中指定位置的元素值
>>> num=[1,2,3,4,5]
>>> num[0]=111
>>> print(num)
[111, 2, 3, 4, 5]
定义列表 num 时,索引位置 0 的元素是“1”,修改它的值为“111”后,索引位置 0 元素的值变为“111”。
(4)添加列表元素
①把一个元素添加到列表的最后
语法:
列表名.append(元素值)
例12:将元素添加到列表的最后位置
>>> num=[1,2,3,4,5]
>>> print(num)
[1, 2, 3, 4, 5]
>>> num.append(666) #末尾添加新元素
>>> print(num)
[1, 2, 3, 4, 5, 666]
上例的代码执行语句 num.append(666)之后,字符串“666”被添加到列表的末尾。
②在列表指定位置前插入新的元素
语法:
列表名.inser(索引位置,元素值)
例13:将元素添加到列表中指定的位置
>>> num=[1,2,3,4,5]
>>> num.insert(1,444)
>>> print(num)
[1, 444, 2, 3, 4, 5]
>>> num.insert(4,777)
>>> print(num)
[1, 444, 2, 3, 777, 4, 5]
在上例中,语句 num.insert(1,444)的作用是在列表 num 的索引位置 1之前插入字符串'004’。初始时,num 有 5个元素,索引位置 1的当前元素是’2',执行以上代码后,字符串 '444’插入到“2”的前面。
(5)删除列表元素
删除列表指定索引位置的元素,语法如下:
del 列表名[索引位置]
例14:删除列表中第2 个元素
>>> num=[1,2,3,4,5]
>>> del num[1]
>>> print(num)
[1, 3, 4, 5]>>> num=[1,2,3,4,5]
>>> del num[1]
>>> print(num)
[1, 3, 4, 5]
上例中,执行语句 del num[1],使用 del 删除索引为 1 的元素’2’。然后输出列表 num 中所有元素时,列表中已经不存在’2’元素。
(6)查找列表元素
使用 in 关键字可以查找列表中是否存在指定的数值,语法如下:
元素值 in 列表名
返回布尔类型 True 或 False。如果査找到,返回 True;否则,返回 False。
例15:使用关键字in查找列表中是否存在指定的数值
>>> num=[1,2,3,4,5]
>>> 1 in num
True
>>> 666 in num
False
在上例的代码中,因为字符串'1’在列表中存在,返回 True。而由于字符串'666‘在列表中不存在,则返回 False。
(7)合并列表
多个列表可以使用加号(+)进行合并,加号后面的列表元素会追加到前面列表的后面。
例16:使用+合并两个列表
>>> num1=[1,2,3,4,5]
>>> num2=[6,7,8,9,10]
>>> num3=num1+num2
>>> print(num3)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> num3=num2+num1
>>> print(num3)
[6, 7, 8, 9, 10, 1, 2, 3, 4, 5]
在上例中,定义了两个列表 num1和 num2。使用加号进行合并操作时,加号后面的列表元素会追加到前面列表的后面。
(8)重复列表
使用星号(*)可以对列表进行重复操作,与单独字符串乘法操作相似。
例17:使用*重复输出列表的元素值
>>> num1=[111,222]
>>> num=num1*5
>>> print(num)
[111, 222, 111, 222, 111, 222, 111, 222, 111, 222]
(9)列表常见问题
Python 中,使用列表实现各种操作时,可能会得到意外的结果。其中最常见的问题是索引越界。索引越界是使用列表时经常犯的一个错误。如列表中有3个元素,因为索引位置是从 0开始计算,所以最大的索引值是 2。如果索引值大于2,表示索引是越界的,程序无法执行。
例17:索引越界
①索引越界
>>> num1=[1,2,3]
>>> print(num1[5])
Traceback (most recent call last):
File "<python-input-104>", line 1, in <module>
print(num1[5])
~~~~^^^
IndexError: list index out of range
②负值索引
索引值为 5 时,大于最大的索引值 2,程序报索引越界错误。那么,当使用小于 8 的负数索引时会不会出错呢?答案是不会,因为Pvthon 列表的负数索引表示的是由列表的末尾进行反向的取值,也就是最后一个元素的位置也可以使用索引 -1 取值,倒数第二个索引是 -2,向前依次递减。
示例代码如下:
>>> num1=[1,2,3,4,5]
>>>
>>> print(num1[-1])
5
>>> print(num1[-2])
4
>>> print(num1[-3])
3
③当获取列表指定范围的一组元素时,不存在列表索引越界的问题
>>> num=[1,2,3]
>>> num1=num[1:5]
>>> print(num1)
[2, 3]
列表 num 中有3个元素,获取列表范围时指定了最大位置是5,超出了最大索引值,程序可以正常执行,并没有报错。
④获取列表指定范围时可以同时使用正数和负数索引
>>> num=[1,2,3]
>>> print(num[0:-1])
[1, 2]
表示获取由索引位置0元素开始,到-1元素之前的所有元素
⑤列表元素也可以是列表
>>> num=[[1,2,3],[11,22,33],[111,222,333]]
>>>
>>> print(num[0])
[1, 2, 3]
>>> print(num[0][0])
1
>>> print(num[1][2])
33
>>> print(num[2][1])
222
上例定义了列表 num,它里面的每一个元素也是一个列表,使用 num[0]表示取到的是第一个元素值,对应的是一个列表。使用 num[0][0]表示取到第一个元素列表的第一个值,使用 print num[2][1]表示取到第三个列表的第二个元素值。