![952845edbd72730e0bd85b106ec8eb01.png](https://i-blog.csdnimg.cn/blog_migrate/fb09a55f97916e2c428ea4601f5502ec.jpeg)
本文框架:
![adefe361958859250124f4dc39118ae5.png](https://i-blog.csdnimg.cn/blog_migrate/30e9eca166e65bd074b6762fba49f31d.jpeg)
一、为什么要学习Python
不管使用哪种编程语言,使用的目的都是通过编程语言与计算机交流,让计算机干活,以此实现使用者的需求。
由于大数据、人工智能的出现,使得数据分析的需求非常紧俏,这直接导致了Python这种编程语言的流行。
全球流行编程语言排行榜:
HelloGitHub 2020年08月编程语言排行榜hellogithub.com二、快速学习Python的4个关键点
- 数据
- 条件判断
- 循环结构
- 函数
1. 数据
1.1 什么是数据?
数据是一切程序运行的原材料,有的数据来自于程序本身,有的数据来自于用户的输入。可以把数据看作是大型的数据加工厂,当给程序输入数据后,程序会对数据进行处理,之后程序再返回处理结果。
如:微信公众号就是个程序,用户可以对微信公众号发送数据,得到自己想要的结果。
![7261939ce5c4384d4e073ad6dfd05f1e.png](https://i-blog.csdnimg.cn/blog_migrate/873eb085b01c8e91cee03b8cfff09d40.jpeg)
1.2 程序中的数据放在哪里?
在代码里,用变量来存放数据,并用等号为变量赋值,变量的概念和方程变量的概念是一样的,只是在计算机程序中,变量不仅可以是数字,还可以是任意的数据类型。
比如:定义一个叫一个人的姓名为“马云”
![ab4ea513c75f1f695f39fdee865dcde9.png](https://i-blog.csdnimg.cn/blog_migrate/157ede1655f9a662e6d57a528bb003f7.png)
等号是赋值命令,等号的左边是变量名称,右边是给变量赋的值,上图的nameStr变量中存放的是姓名叫“马云”的人的数据。
1.3 如何给变量取名?
为了方便使用变量,优秀的编程人员给变量取名时,变量的名称的前半部分(name)要能代表数据的意义,后半部分(Str)要能代表数据的类型,这样当使用变量的时候,可以通过变量名称知道变量里面存放了什么数据,存放的数据是哪种数据类型。
比如上幅图中,变量nameStr
的前半部分name
代表人的姓名,而Str
则代表变量nameStr
的类型是字符串 .
变量的命名规则:
- 由字符,数字和下划线
_
组成 - 不能以数字开头
- 不能是关键字
- 变量名大小写敏感
1.4 如何注释代码?
注释代码,是为了让人更好地理解代码。在Python中注释代码有两种方法,如下图:
![4aff01202b50aa76c86c7d6afc5640fb.png](https://i-blog.csdnimg.cn/blog_migrate/46a62cf5af414bacb254467740b0d898.jpeg)
1.5 Python中的数据类型
Python中的数据类型根据用途的不同分为:字符串(String)、数值(Number)、容器、布尔、空值(None)五大类型
(1)字符串(String)
【字符串合并】
字符串合并用+
号 ,例如:
![b2c83e964d90696736b516570bb07899.png](https://i-blog.csdnimg.cn/blog_migrate/970486c015378754c2088753ba2eab80.png)
【字符串的%s
格式化】
用%s
可将字符串格式化,例如:
![b9d38e2db3f5427ca57eec44fe9810e0.png](https://i-blog.csdnimg.cn/blog_migrate/ca9f76f5b5a003757ad5e7e2241ef656.png)
(2)数值(Number)
数值类型分为三种:int(整数)、float(浮点数)、complex(复数),它们与数学中的概念相同,如:
1)int(整数)
age = 50
即年龄为50
2)float(浮点数)
money = 3.53
即钱为3.53元
(3)容器
Python中为了存放不同的数据有4种容器,分别是列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary)
容器的4种操作:
增加、删除、修改、查询
![5694b3b8cb87378816b95cd0bea967de.png](https://i-blog.csdnimg.cn/blog_migrate/825168249215633c92120be50cb40aea.png)
1)列表(List)
列表由一对中括号[]
进行定义,元素与元素直接使用逗号隔开。如:
![b18afe186aeea306b4a086d9b39ca546.png](https://i-blog.csdnimg.cn/blog_migrate/5f1b0fef9e1dffdd44f6edbb59cb46ae.jpeg)
![15d1977be984e828c5063425dedc0d51.png](https://i-blog.csdnimg.cn/blog_migrate/e2a2801a58cb04b0b196e2b558c0b3b5.png)
列表的增删改查:
![b84de059867044c6ff68234284ac97e0.png](https://i-blog.csdnimg.cn/blog_migrate/e6fee30855b06002319079eeee1670da.jpeg)
2)元组(Tuple)
元组通过一对小括号()
进行定义,元组之间使用逗号隔开。
![995b6c065784ac8d31b61434daeaba49.png](https://i-blog.csdnimg.cn/blog_migrate/4430f02c90accb7d6d958742dd7f3ff4.jpeg)
![b684de537769620f502488a3aa48d4b0.png](https://i-blog.csdnimg.cn/blog_migrate/2fd1fbe20a69e6db1e1d2100102dfe97.png)
元组的元素不能修改,增加、删除查询与列表的操作一致。
元组利用不可修改的特性,应用在多变量赋值和函数多返回值上。
3)集合(Sets)
python中集合类型与数学中的集合类型一致,用来表示无序、不重复元素的容器。
![3f9dd8a765705030cd036d0988a2e975.png](https://i-blog.csdnimg.cn/blog_migrate/992fd2ebe90a616ca814173f0835be2e.jpeg)
集合的增删改查:
![c9d4e357876e2376ff04d3931d05da19.png](https://i-blog.csdnimg.cn/blog_migrate/fd2f9b8a2e2d52644c17ce3bb2d7b28f.jpeg)
4)字典(Dictionary)
python中的字典数据类型就是键值对的集合,使用一对大括号{}
进行定义,键值对之间使用逗号,
隔开,键和值使用冒号:
分割。
字典中的键必须是不可变数据类型,且不会重复,值可以使任意数据类型。
键与值是映射关系,好比在医院中的病人编号(键)、病人姓名(值),医生根据病人编号找到对应的病人。
![d0af5dcb0be7d69d907409b400b647c2.png](https://i-blog.csdnimg.cn/blog_migrate/95c4c7807c746dfc3611864df9b1d9de.jpeg)
![40e428ee397fd75e31e03985d78a61d7.png](https://i-blog.csdnimg.cn/blog_migrate/019c9fb04a20835529efe9837dfdbb08.png)
字典的增删改查:
![762ebd3edfb580857f32d4211c3b3da0.png](https://i-blog.csdnimg.cn/blog_migrate/5d63e084305ec2979a6ed22bbee2de05.jpeg)
(4)布尔
条件表达式的运算结果返回布尔型,布尔型数据只有两个,非0
和0
、True
和False
表示真
和假
。
运算符:
比较运算符
![4441127b583b6a592a9a8c74d3102ad5.png](https://i-blog.csdnimg.cn/blog_migrate/c296772dd96b922ec308cc497588755f.jpeg)
逻辑运算符
![c0ba483183fb0bb59ece400a5f48ab09.png](https://i-blog.csdnimg.cn/blog_migrate/8ac76415de29f70981ae7e5771ccf198.png)
成员运算符
![26c90633aaf7a8eaaf496556318bc47d.png](https://i-blog.csdnimg.cn/blog_migrate/8030f5ac80d011f48484daeeadef4bf4.png)
布尔型运算
布尔型数据可以和数值类型数据进行数学计算,这时True
表示整数1
, False
表示整数0
![282747abd991baca606f1587e399c7f9.png](https://i-blog.csdnimg.cn/blog_migrate/ec233c830d79528771fe1831d4248352.png)
布尔类型转换
任意数据都可以通过函数bool
转换成布尔型。在python中,None, 0(整数),0.0(浮点数),0.0+0.0j(复数),""(空字符串),空列表,空元组,空字典,空集合的布尔值都为False
,其他数值为True
。如:
![72b5b6d4c9091239292f2ad7998de7cb.png](https://i-blog.csdnimg.cn/blog_migrate/297fd5769b7b5f03ea14f6086dfae17c.png)
(5)空值(None)
None
是python中的特殊数据类型,它的值就是它本身None
,表示空,表示不存在。
2. 条件判断
条件判断分为单分支、二分支、多分支条件判断
2.1 单分支条件判断
单分支结构通过if
语句来实现,语法如下:
if <条件>:
语句块
- 注意条件语句结束后要紧跟冒号
- 语句块是
if
条件满足后执行的一条或多条语句序列 - 语句块中语句通过缩进与
if
语句所在行形成包含关系 - 缩进按照规范为4个空格
![6ed6f04ff323d2b8d3ad8b893eb7219f.png](https://i-blog.csdnimg.cn/blog_migrate/3f72778964dbe84945cd7bcb4ad5aed5.png)
案例:
![a926ba57d34dbfe41c733fadd92b7e10.png](https://i-blog.csdnimg.cn/blog_migrate/3abe73afa5ef40eee9bb8653b244b78e.png)
2.2 二分支条件判断
二分支结构通过if-else
语句来实现的,语法格式如下:
if <条件>:
<语句块1>
else:
<语句块2>
- <语句块1>是在if条件满足后执行的一个或多个语句序列
- <语句块2>是if条件不满足后执行的语句序列
- 注意缩进,<语句块2>通过缩进与else所在行形成包含关系
二分支语句用于区分<条件>的两种可能True或者False,分别形成执行路径
![bcf91dde9e139981e1cec88b554e946d.png](https://i-blog.csdnimg.cn/blog_migrate/6cd0be29d2bfcedad6f0b3291708b126.png)
案例:
![b99d56ed8729ba6a32f9a73e562dc5f1.png](https://i-blog.csdnimg.cn/blog_migrate/2bd683391f6a644bf1672c6296df49c3.png)
2.3 多分支条件判断
python 通过if - elif - else
表示多分支结构,语法如下:
if <条件1>:
<代码块1>
elif <条件2>:
<代码块2>
...
else:
<代码块3>
python依次执行判断条件,寻找第一个结果为True的条件,执行该条件下的代码块,同时结束后跳过整个if-elif-else
结构,执行后面的语句。如果没有任何条件成立,则执行else下的代码块,且else语句是可选的,可以没有else语句。
![8f9bd104aedf050dc419a9d94de5e218.png](https://i-blog.csdnimg.cn/blog_migrate/2efef8a818fe6e5c98f99b5bfb941c11.png)
案例:
![ecc7bfc13ccaf7f2aa8968b2cb443f6c.png](https://i-blog.csdnimg.cn/blog_migrate/58f6c1046e1f651016100de3f922637f.png)
3. 循环结构
python中循环结构有两种:
1. 条件循环,也叫while循环
2. 遍历循环,也叫for循环
3.1 条件循环
python中的条件循环通过while
循环语句来实现,所以也叫while
循环,语法格式如下:
while <条件>:
代码块
while
关键字空格后接条件表达式末尾加上冒号组成while
语句- 代码块中的代码通过4个空格的缩进和
while
语句形成包含关系
while
语句首先计算<条件>
表达式,如果结果True
,则执行对应代码块中的语句,执行结束后再次执行<条件>
表达式,再次判断结果,如果为True
则循环执行,直到<条件>
表达式为False
时跳出循环,执行和while
语句相同缩进的下一条语句。
当<条件>
表达式恒为True
时,形成无限循环,也叫死循环,需要小心使用。
![12c29f43e328d6de4ed811aecaee2939.png](https://i-blog.csdnimg.cn/blog_migrate/d27524d1db5acf2d53c0c13b2eb651f3.png)
案例:
![b7a7005af1977591e62a2f7e47bbdc48.png](https://i-blog.csdnimg.cn/blog_migrate/63e865824b4aae575bf4c16f53f0292b.jpeg)
3.2 遍历循环
python中使用关键字for
来实现遍历循环,也叫for
循环,也叫迭代循环,语法格式如下:
for <循环变量> in <容器>:
代码块
- 关键字
for
+空格+<循环变量>
+关键字in
+<容器>+冒号组成for语句 - 代码块通过缩进和for语句形成包含关系
for 循环会依次取出遍历结构中的元素,然后赋值给循环变量,每次遍历都会执行代码块,只到取出遍历结构中的所有元素。
所有可迭代对象都可以作为遍历结构进行for循环。
基本数据类型中序列数据类型,散列数据类型都可以进行迭代。
案例:每天吃饭
![c724ae67d462446fa87d742e668aa96a.png](https://i-blog.csdnimg.cn/blog_migrate/9422f8c02e46fb8f8746cc0eee8551d2.png)
案例:清洗GAFATA股票数据
![20ca6c6bc3503b73b27146e2598ba765.png](https://i-blog.csdnimg.cn/blog_migrate/494eca58f3c3574fdc448248584cd9a2.jpeg)
continue用于跳出当前循环
![1f64ed77814db563953848dddb5b492e.png](https://i-blog.csdnimg.cn/blog_migrate/b38c8bbe269fc4b4ac61cc3a5439226c.png)
break用于退出整个循环
![0ee15bc1e244b1a7c366a313cb5712ba.png](https://i-blog.csdnimg.cn/blog_migrate/56bd34bd9bb4d5dce1159ff546ab3e8b.png)
4. 函数
4.1 函数的定义与使用
函数是实现某个特定功能,可重复使用的代码块
![89bd5f2ced5ce72f5f7989ea7f2e68c1.png](https://i-blog.csdnimg.cn/blog_migrate/637309e1f51adb036a5fe061a927e430.png)
自定义函数示例:
![a097ec7519595d9099ceed0710d010ec.png](https://i-blog.csdnimg.cn/blog_migrate/7422c0351ada8244d232dd01f0557704.png)
使用自定义函数:
![5fc9277e85eb629c1082d3d3dfae9025.png](https://i-blog.csdnimg.cn/blog_migrate/3073fd8d6eebf927d55e89310c1a6441.png)
![56111c3d0e2506d6ceeda006de8553ad.png](https://i-blog.csdnimg.cn/blog_migrate/9ab37122d1ed84c1751269c623131c50.png)
4.2 函数的参数数据类型
(1)不可变数据类型
字符串、数字,元祖这3种是不可变数据类型,其他的都是可变数据类型
![3ccbae3a46457476791da02bb7ca08da.png](https://i-blog.csdnimg.cn/blog_migrate/0af6771eef4cf18207416c20641e3cf2.png)
(2)可变数据类型
字符串、数字,元祖这3种是不可变数据类型,其他的都是可变数据类型
![9f9590df0a5516e9e04612ee274243ea.png](https://i-blog.csdnimg.cn/blog_migrate/13953d2b0aea07e99a457bf8ffe00be8.jpeg)
4.3 变量作用域
python中一个变量能够被访问的范围叫做作用域。根据作用域的大小简单的分为全局变量和局部变量。
(1)全局变量
python是解释型编程语言,解释器在运行一个python程序时会在计算机内存中申请一块内存用来运行这个程序。全局变量在这块内存空间中都可以被访问和修改。
直接定义在函数外的变量就是全局变量,在程序运行的全过程有效。
案例:
![ac94d4c6ea09bf5ad659463e88b2fe06.png](https://i-blog.csdnimg.cn/blog_migrate/ed6de3e74ec35417d681b383fa49f410.png)
在函数内部不能直接修改全局变量,案例:
![b82b7f9100595f4e31aab717f0eb9ef8.png](https://i-blog.csdnimg.cn/blog_migrate/7e3d5aea6238d312b879774ebe2d02b6.jpeg)
在函数内部修改全局变量要使用globals
关键字,案例:
![d1995e8ede0abc4cfecdeac837075019.png](https://i-blog.csdnimg.cn/blog_migrate/8412a1c1a8b54e3340166efa7cdd6f82.png)
(2)局部变量
定义在函数里的变量就是局部变量,它只在它定义的函数里起作用,一旦函数执行完毕它就不存在了。
案例:
![1ebcffcce6a74add5d18a02b42cbdcdd.png](https://i-blog.csdnimg.cn/blog_migrate/45446aeb42264475d1c8d99419c86928.png)
三、模块与包
![6434e07b3a5eafc87d1162cc87eeabdc.png](https://i-blog.csdnimg.cn/blog_migrate/92ad586b092a64ffd1e5be1420c43885.png)
1. 模块
如果从Python解释器退出并再次进入,之前的定义(函数和变量)都会丢失。因此,如果想编写一个稍长些的程序,最好使用文本编辑器为解释器准备输入并将该文件作为输入运行。这被称作编写 脚本 。随着程序变得越来越长,把它拆分成几个文件,方便维护。也可以在不同的程序中使用一个便捷的函数, 而不必把这个函数复制到每一个程序中去。
1.1 概念
模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py
。
如何使用Python内置模块?
''''
Python内置模块
'''
#第1步:引入模块
import sys
#第2步:使用模块中的函数,属性
pathList=sys.path
print('Python 路径为:n', pathList)
sys.
![46e6ec0bbd2d38de7d9ca5a4cb11d1bf.png](https://i-blog.csdnimg.cn/blog_migrate/69a857e999c372b0b767420416d5e279.jpeg)
输入sys.
后按下Tab键
![df62354668fe232d7d1a4438334f53e2.png](https://i-blog.csdnimg.cn/blog_migrate/b6c4d2ee55a76461461b17f16c119c1e.jpeg)
1.2 导入模块
通过关键字import
可以在代码中导入写好的模块,语法如下:
import 模块名
# 模块名为脚本去掉.py时的文件名
使用模块:
import 模块名
模块名.函数名.(...)
import
语句有一个变体,它可以把模块中的名称(函数名,变量,类名)直接导入到当前模块的变量表里,语法如下:
from 模块名 import 名称
# 或
from 模块名 import *
如果模块名称之后带有 as
,则跟在 as
之后的名称将直接绑定到所导入的模块。语法如下:
import 模块名称 as 新名称
from 模块名称 import 名称 as 新名称
1.3 第三方模块的使用
![affb028fa61b85c9ba24606e4207df3f.png](https://i-blog.csdnimg.cn/blog_migrate/c17077d8df3ffaccde0bfeb59bc443a1.jpeg)
2. 包
模块的问题解决了代码过长不便于维护问题,但是如果不同人编写的模块名相同怎么办?为了避免模块名冲突,python又引入了用目录来组织模块的方法,称为包。只要顶层包名不起冲突,模块就不会起冲突。
使用某个包中的某个模块的某个函数:
方法一:
import 包名.模块名
包名.模块名.函数名
方法二:
也可以通过结合from
引用
from 包名 import 模块名
模块名.函数名
方法三:
from 包名.模块名 import 函数名
函数名
四、数据结构
![915477e9a27dd91d0b37fce9244e4daf.png](https://i-blog.csdnimg.cn/blog_migrate/bd7bc1322ed65b061724e89ad89b8cb8.png)
介绍Python的collections包,了解常用的数据结构,官网使用操作文档:
https://docs.python.org/3.8/tutorial/datastructures.html#more-on-listsdocs.python.org1. 队列(queue)
队列就像你去餐厅外婆家吃饭排队,新来的人在队列尾部加入,叫做入队。取完票的人从队列首部离开队列,叫做出队
![9f954c11f373f4cc31ab62412243385f.png](https://i-blog.csdnimg.cn/blog_migrate/2ac68ad0829a55cf4084c8f8b8bc0f30.png)
![010f75e558b95adeaab61019a4b341d3.png](https://i-blog.csdnimg.cn/blog_migrate/a643145aaecface97999206af5050d19.png)
![1a76cccbca71a4bf9284ff02e5472022.png](https://i-blog.csdnimg.cn/blog_migrate/f8ae0fd2f2954675c393bfe9d8f04ad5.png)
![cab855661d107b6086efed750ce51ebf.png](https://i-blog.csdnimg.cn/blog_migrate/295b091c82e9a670f5a5145a2bb58d33.png)
2. 栈(stack)
栈这种数据结构有点像像生活中的木桶。你往栈中加入新的元素,就是入栈,新的元素总是放在木桶的最上面。
![e1b10fa2cb3d4f8620246901bea45aac.png](https://i-blog.csdnimg.cn/blog_migrate/43572546c135f634f69c9f8131e6b672.jpeg)
3. 排序字典(OrderedDict)
![e8751bd80d671bbea53f763c3f560826.png](https://i-blog.csdnimg.cn/blog_migrate/272fe131012763735f11b55e7033da5f.png)
![beea5c9352caeb89d1d5efa3a32f3319.png](https://i-blog.csdnimg.cn/blog_migrate/9921fc913d20962fb326c62f80e38bce.jpeg)
4. 计数器(Counter)
计数器可对元素做出现次数做统计
![5d82ceb0d968b50bdf0238b158035a7e.png](https://i-blog.csdnimg.cn/blog_migrate/fd4c2eb519ba59b0e9020c65bcc2906b.png)
![4fa304e100299b08cbfb564a3bc97ea5.png](https://i-blog.csdnimg.cn/blog_migrate/581fadb117047a0a8fd6f6e809d3d509.png)
菜鸟网站Python3资料:
Python3 教程 | 菜鸟教程www.runoob.com![abc59eefd7bd573937efbcd35886b13d.png](https://i-blog.csdnimg.cn/blog_migrate/177edc3315a83908c78a948c6d30219e.png)