摘要:它是一门解析型的语言,何为解析型语言呢就是在运行时通过解析器将源代码一行行解析成机器码。而像语言,等则是编译型的语言,即通过编译器将所有的源代码一次性编译成二进制指令,生成一个可执行的程序。
我从2021年6月13号写下第一篇Python的系列专栏算起,陆续更新了二十七篇Python系列文章。在此感谢读者朋友们的支持和阅读,特别感谢一键三连的小伙伴。
本专栏起名【Python从入门到精通】,主要分为基础知识和项目实战两个部分,目前基础知识部分已经完全介绍完毕。下一阶段就是写Python项目实战以及爬虫相关的知识点。
为了对前期学习的Python基础知识做一个总结归纳,以帮助读者朋友们更好的学习下一部分的实战知识点,故在此我写下此文,共勉,同进。
同时为了方便大家交流学习,我这边还建立了一个Python的学习群。群里都是一群热爱学习的小伙伴,不乏一些牛逼的大佬。大佬带飞,我相信进入群里的小伙伴一定会走的更快,飞的更高。 欢迎扫码进群。
下面就通过一个思维导图,展示本专栏Python基础知识部分的总览图。
本专栏从零基础出发,从环境的搭建到高级知识点的学习,一步步走来,相信各位读者朋友们早已掌握相关的知识点。接下来就做一个详细的回顾。
Python是一门开源免费的,通用型的脚本编程语言。它需要在运行时将代码一行行解析成CPU能识别的机器码。它是一门解析型的语言,何为解析型语言呢?就是在运行时通过解析器将源代码一行行解析成机器码。而像C语言,C++等则是编译型的语言,即通过编译器将所有的源代码一次性编译成二进制指令,生成一个可执行的程序。解析型语言相对于编译型语言的好处就是天然具有跨平台的特点,一次编码,到处运行。
python3
验证安装的结果,如果出现如下结果就表明安装Python编译器安装成功了。工欲善其事必先利其器,在实际开发中我们都是通过IDE(集成开发环境)来进行编码,为啥要使用IDE呢?这是因为IDE集成了语言编辑器,自动建立工具,除错器等等工具可以极大方便我们快速的进行开发。打个比方 我们可以将集成开发环境想象成一个台式机。虽然只需要主机就能运行起来,但是,还是需要显示器,键盘等才能用的爽。
PyCharm就是这样一款让人用的很爽的IDE开发工具。下面就简单介绍一下它的安装过程
点击链接 https://www.jetbrains.com/pycharm/download/
进入下来页面,PyCharm 有专业版和社区版。其中,专业版需要购买才能使用,而社区版是免费的。社区版对于日常的Python开发完全够用了。所以我们选择PyCharm的社区版进行下载安装。点击如下图所示的按钮进行安装包的下载。
安装包下载好之后,我们双击安装包即可进行安装,安装过程比较简单,基本只需要安装默认的设置每一步点击Next按钮即可,不过当出现下图的窗口时需要设置一下。
设置好之后点击 Next 进入下一步的安装,知道所有的安装都完成。
这里使用只需要注意一点,就是设置解释器,默认的话在Project Interpreter的选择框中是提示的是 No interpreter,即没有选中解释器,所以,我们需要手动添加。
所以需要点击设置按钮设置解释器,这里选择 Add Local 设置本地的解释器。
打开解释器的设置页面之后,默认选中的是Virtualenv Environment 这个tab页,
这里Location是用来设置项目的虚拟环境,具体可以参考pycharm的使用小结,设置虚拟环境,更换镜像源
Base interpreter 用来设置解释器的路径。
至此,开发Python的脚手架已经弄好,接下来就是编码了。
如下创建了一个名为demo_1.py的文件,然后在文件中写入了如下几行代码
print("你好,世界")a = 120b = 230print(a + b)
运行这些代码只需要简单的右键选中 Run ‘demo_1’ 或者 Debug ‘demo_1’ ,这两者的区别是Run demo_1是以普通模式运行代码,而 Debug ‘demo_1’ 是以调试模式运行代码。
运行结果就是:
详细内容可以查看【Python从入门到精通】(二)怎么运行Python呢?有哪些好的开发工具
首先介绍的是Python的注释,Python的注释分为两种:单行注释和多行注释。
#注释内容
从#号开始直到这行结束为止的所有内容都是注释。例如:# 这是单行注释
"""三个连续的单引号的多行注释注释多行内容"""
或者
"""三个连续的双引号的多行注释注释多行内容"""
多行注释通常用来为Python文件、模块、类或者函数等添加版权或者功能描述信息(即文档注释)
不同于其他编程语言(如Java,或者C)采用大括号{}
分割代码块,Python采用代码缩进和冒号 : 来区分代码块之间的层次。如下面的代码所示:
a = -100 if a >= 0: print("输出正数" + str(a)) print("测试")else: print("输出负数" + str(a))
其中第一行代码a = -100
和第二行代码if a >= 0:
是在同一作用域(也就是作用范围相同),所以这两行代码并排。而第三行代码print("输出正数" + str(a))
的作用范围是在第二行代码里面,所以需要缩进。第五行代码也是同理。第二行代码通过冒号和第三行代码的缩进来区分这两个代码块。
Python的缩进量可以使用空格或者Tab键来实现缩进,通常情况下都是采用4个空格长度作为一个缩进量的。
这里需要注意的是同一个作用域的代码的缩进量要相同,不然会导致IndentationError异常错误,提示缩进量不对,如下面代码所示:第二行代码print("输出正数" + str(a))
缩进了4个空格,而第三行代码print("测试")
只缩进了2个空格。
if a >= 0: print("输出正数" + str(a)) print("测试")
在Python中,对于类定义,函数定义,流程控制语句就像前面的if a>=0:
,异常处理语句等,行尾的冒号和下一行缩进,表示下一个代码块的开始,而缩进的结束则表示此代码的结束。
详细内容可以查看【Python从入门到精通】(三)Python的编码规范,标识符知多少?
Python3中的整数是不分类型,也就是说没有长整数类型(Long)或者短整数类型(short)之分,它的取值范围是是无限的,即不管多大或者多小的数字,Python都能轻松的应对。如下就是两个极大或者极小的整数。
>>> 100000-00000000000000000000000000000000000000001000000000000000000000000000000000000000000000>>> print(-1000000000000000000000000000000000000000000000)-1000000000000000000000000000000000000000000000
可以看出再大或者再小的数字都不会出现溢出的情况,这说明了Python对整数的处理能力非常强。
Python中可以用多种进制的来表示整数。
# 二进制a=0b1001print("a=",a)# 八进制b=0o207print("b=",b)# 十六进制c=0x45print("c=",c)
运行结果是:
a= 9b= 135c= 69
Python 3.x允许使用下划线_作为数字(包括整数和小数)的分隔符,通常每隔三个数字添加一个下划线,比如:click = 1_301_547
在编程语言中,小数通常以浮点数的形式存储,浮点数和定点数是相对的;小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。
Python中的小数有两种书写形式:
aEn或aen
x=10.01print("x=",x)y=-0.031print("y=",y)z=2.3E10print("z=",z)w=-0.00000001print("w=",w)
运行结果是:
x= 10.01y= -0.031z= 23000000000.0w= -1e-08
布尔类型用来表示真(对)或假(错),比如常见的3>2 比较算式,这个是正确的,Python中使用True来代表;再比如2>3 比较算式,这个是错误的,用False来代表。
print(3>2)print(2>3)print("True==1的结果是:",True==1)print("False==0的结果是:",False==0)
运行结果是:
TrueFalseTrue==1的结果是: TrueFalse==0的结果是: True
详细内容可以查看【Python从入门到精通】(四)Python的内置数据类型有哪些呢?数字了解一下
序列(sequence)指的是一块可存放多个元素的内存空间,这些元素按照一定的顺序排列。每个元素都有自己的位置(索引),可以通过这些位置(索引)来找到指定的元素。如果将序列想象成一个酒店,那么酒店里的每个房间就相当于序列中的每个元素,房间的编号就相当于元素的索引,可以通过编号(索引)找到指定的房间(元素)。
了解完了序列的基本概念,那么在Python中一共有哪些序列类型呢?如下图所示:
从图中可以看出在Python中共有7种序列类型,分别是文本序列类型(str);二进制序列类型 bytes和bytearray;列表(list);元组(tuple);集合类型(set和frozenset);范围类型(range)以及字典类型(dict)。
按照能存储的元素可以将序列类型划分为两大类:分别是:容器序列和扁平序列
容器序列:即可容纳不同数据类型的元素的序列;有 list;tuple;set;dict
举个栗子:
list=["runoob",786,2.23,"john",70.2]
这里的list保存的元素有多种数据类型,既有字符串,也有小数和整数。
扁平序列:即只能容纳相同数据类型的元素的序列;有bytes;str;bytearray,以str为例,同一个str只能都存储字符。
按照序列是否可变,又可分为可变序列和不可变序列。
这里的可变的意思是:序列创建成功之后,还能不能进行修改操作,比如插入,修改等等,如果可以的话则是可变的序列,如果不可以的话则是不可变序列。
可变序列有列表( list);字典(dict)等,
不可变的序列有元祖(tuple),后面的文章会详细的对这些数据类型做详细介绍。
在介绍序列概念的时候,说到了序列中元素的索引,那么什么是序列的索引呢?其实就是位置的下标。 如果对C语言中的数组有所了解的话,我们知道数组的索引下标都是从0开始依次递增的正数,即第一个元素的索引下标是0,第n个元素的索引下标是n-1。序列的索引也是同理,默认情况下都是从左向右记录索引,索引值从0开始递增,即第一个元素的元素的索引值是0,第n个元素的索引值是n-1。如下图所示:
当然与C语言中数组不同的是,Python还支持索引值是负数,该类的索引是从右向左计数。换句话说,就是从最后一个元素开始计数,从索引值-1开始递减,即第n个元素的索引值是-1,第1个元素的索引值是-n,如下图所示:
切片操作是访问序列元素的另一种方式,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。切片操作的语法格式是:
sname[start : end : step]
各个参数的含义分别是:
str1="好好学习,天天向上"# 取出索引下标为7的值print(str1[7])# 从下标0开始取值,一直取到下标为7(不包括)的索引值print(str1[0:7])# 从下标1开始取值,一直取到下标为4(不包括)的索引值,因为step等于2,所以会隔1个元素取值print(str1[1:4:2])# 取出最后一个元素print(str1[-1])# 从下标-9开始取值,一直取到下标为-2(不包括)的索引值print(str1[-9:-2])
运行的结果是:
向好好学习,天天好习上好好学习,天天
Python支持类型相同的两个序列使用"+"
运算符做想加操作,它会将两个序列进行连接,但是不会去除重复的元素,即只做一个简单的拼接。
str="他叫小明"str1="他很聪明"print(str+str1)
运行结果是:他叫小明他很聪明
Python支持使用数字n乘以一个序列,其会生成一个新的序列,新序列的内容是原序列被重复了n次的结果。
str2="你好呀"print(str2*3)
运行结果是:你好呀你好呀你好呀
,原序列的内容重复了3次。
Python中可以使用in
关键字检查某个元素是否为序列中的成员,其语法格式为:
value in sequence
其中,value表示要检查的元素,sequence表示指定的序列。
举个栗子:查找天
字是否在字符串str1中。
str1="好好学习,天天向上"print("天" in str1)
运行结果是:True
*由若干个字符组成的集合就是一个字符串(str)**,Python中的字符串必须由双引号""或者单引号’"包围。其语法格式是:
"字符串内容""字符串内容"
如果字符串中包含了单引号需要做特殊处理。比如现在有这样一个字符串
str4="I"m a greate coder"
直接这样写有问题的。
处理的方式有两种:
/
进行转义即可:str4="I/"m a greate coder"
str4="I"m a greate coder"
这里外层用双引号,包裹字符串里的单引号。
通过+
运算符
现有字符串码农飞哥好,
,要求将字符串码农飞哥牛逼
拼接到其后面,生成新的字符串码农飞哥好,码农飞哥牛逼
举个例子:
str6 = "码农飞哥好,"# 使用+ 运算符号print("+运算符拼接的结果=",(str6 + "码农飞哥牛逼"))
运行结果是:
+运算符拼接的结果= 码农飞哥好,码农飞哥牛逼
切片操作是访问字符串的另一种方式,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的字符串。切片操作的语法格式是:
sname[start : end : step]
各个参数的含义分别是:
str1="好好学习,天天向上"# 取出索引下标为7的值print(str1[7])# 从下标0开始取值,一直取到下标为7(不包括)的索引值print(str1[0:7])# 从下标1开始取值,一直取到下标为4(不包括)的索引值,因为step等于2,所以会隔1个元素取值print(str1[1:4:2])# 取出最后一个元素print(str1[-1])# 从下标-9开始取值,一直取到下标为-2(不包括)的索引值print(str1[-9:-2])
运行的结果是:
向好好学习,天天好习上好好学习,天天
Python提供了split()方法用于分割字符串,split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值反馈回来。该方法的基本语法格式如下:
str.split(sep,maxsplit)
此方法中各部分参数的含义分别是:
str = "https://feige.blog.csdn.net/"print("不指定分割次数", str.split("."))print("指定分割次数为2次",str.split(".",2))
运行结果是:
不指定分割次数 ["https://feige", "blog", "csdn", "net/"]指定分割次数为2次 ["https://feige", "blog", "csdn.net/"]
合并字符串与split的作用刚刚相反,Python提供了join() 方法来将列表(或元组)中包含的多个字符串连接成一个字符串。其语法结构是:
newstr = str.join(iterable)
此方法各部分的参数含义是:
list = ["码农飞哥", "好好学习", "非常棒"]print("通过.来拼接", ".".join(list))print("通过-来拼接", "-".join(list))
运行结果是:
通过.来拼接 码农飞哥.好好学习.非常棒通过-来拼接 码农飞哥-好好学习-非常棒
startswith()方法用于检索字符串是否以指定字符串开头,如果是返回True;反之返回False。其语法结构是:
str.startswith(sub[,start[,end]])
此方法各个参数的含义是:
str1 = "https://feige.blog.csdn.net/"print("是否是以https开头", str1.startswith("https"))print("是否是以feige开头", str1.startswith("feige", 0, 20))
运行结果是:
是否是以https开头 True是否是以feige开头 False
endswith()方法用于检索字符串是否以指定字符串结尾,如果是则返回True,反之则返回False。其语法结构是:
str.endswith(sub[,start[,end]])
此方法各个参数的含义与startswith方法相同,再此就不在赘述了。
Python中提供了3种方法用于字符串大小写转换
str.title()
str.lower()
str.upper()
。str = "feiGe勇敢飞"print("首字母大写", str.title())print("全部小写", str.lower())print("全部大写", str.upper())
运行结果是:
首字母大写 Feige勇敢飞全部小写 feige勇敢飞全部大写 FEIGE勇敢飞
Python中提供了三种方法去除字符串中空格(删除特殊字符)的3种方法,这里的特殊字符,指的是指表符(/t)、回车符(/r),换行符(/n)等。
str = "/n码农飞哥勇敢飞 "print("去除前后空格(特殊字符串)", str.strip())print("去除左边空格(特殊字符串)", str.lstrip())print("去除右边空格(特殊字符串)", str.rstrip())
运行结果是:
去除前后空格(特殊字符串) 码农飞哥勇敢飞去除左边空格(特殊字符串) 码农飞哥勇敢飞 去除右边空格(特殊字符串) 码农飞哥勇敢飞
最早的字符串编码是ASCll编码,它仅仅对10个数字,26个大小写英文字母以及一些特殊字符进行了编码,ASCII码最多只能表示256个字符,每个字符只需要占用1个字节。为了兼容各国的文字,相继出现了GBK,GB2312,UTF-8编码等,UTF-8是国际通用的编码格式,它包含了全世界所有国家需要用到的字符,其规定英文字符占用1个字节,中文字符占用3个字节。
str.encode([encoding="utf-8"][,errors="strict"])
bytes.decode([encoding="utf-8"][,errors="strict"])
str = "码农飞哥加油"bytes = str.encode()print("编码", bytes)print("解码", bytes.decode())
运行结果是:
编码 b"/xe7/xa0/x81/xe5/x86/x9c/xe9/xa3/x9e/xe5/x93/xa5/xe5/x8a/xa0/xe6/xb2/xb9"解码 码农飞哥加油
默认的编码格式是UTF-8,编码和解码的格式要相同,不然会解码失败。
在实际工作中我们经常要将一个数据对象序列化成字符串,也会将一个字符串反序列化成一个数据对象。Python自带的序列化模块是json模块。
import jsondict = {"学号": 1001, "name": "张三", "score": [{"语文": 90, "数学": 100}]}str = json.dumps(dict,ensure_ascii=False)print("序列化成字符串", str, type(str))dict2 = json.loads(str)print("反序列化成对象", dict2, type(dict2))
运行结果是:
序列化成字符串 {"name": "张三", "score": [{"数学": 100, "语文": 90}], "学号": 1001} 反序列化成对象 {"name": "张三", "score": [{"数学": 100, "语文": 90}], "学号": 1001}
详细内容可以查看
【Python从入门到精通】(五)Python内置的数据类型-序列和字符串,没有女友,不是保姆,只有拿来就能用的干货
【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?【收藏下来就挺好的】
列表作为Python序列类型中的一种,其也是用于存储多个元素的一块内存空间,这些元素按照一定的顺序排列。其数据结构是:
[element1, element2, element3, ..., elementn]
element1~elementn表示列表中的元素,元素的数据格式没有限制,只要是Python支持的数据格式都可以往里面方。同时因为列表支持自动扩容,所以它可变序列,即可以动态的修改列表,即可以修改,新增,删除列表元素。看个爽图吧!
首先介绍的是对列表的操作:包括列表的创建,列表的删除等!其中创建一个列表的方式有两种:
第一种方式:
通过[]
包裹列表中的元素,每个元素之间通过逗号,
分割。元素类型不限并且同一列表中的每个元素的类型可以不相同,但是不建议这样做,因为如果每个元素的数据类型都不同的话则非常不方便对列表进行遍历解析。所以建议一个列表只存同一种类型的元素。
list=[element1, element2, element3, ..., elementn]
例如:test_list = ["测试", 2, ["码农飞哥", "小伟"], (12, 23)]
PS: 空列表的定义是list=[]
第二种方式:
通过list(iterable)
函数来创建列表,list函数是Python内置的函数。该函数传入的参数必须是可迭代的序列,比如字符串,列表,元组等等,如果iterable
传入为空,则会创建一个空的列表。iterable
不能只传一个数字。
classmates1 = list("码农飞哥")print(classmates1)
生成的列表是:["码", "农", "飞", "哥"]
向列表中新增元素的方法有四种,分别是:
第一种: 使用**+运算符将多个列表**连接起来。相当于在第一个列表的末尾添加上另一个列表。其语法格式是listname1+listname2
name_list = ["码农飞哥", "小伟", "小小伟"]name_list2 = ["python", "java"]print(name_list + name_list2)
输出结果是:["码农飞哥", "小伟", "小小伟", "python", "java"]
,可以看出将name_list2中的每个元素都添加到了name_list的末尾。
第二种:使用append()方法添加元素
append()方法用于向列表末尾添加元素,其语法格式是:listname.append(p_object)
其中listname表示要添加元素的列表,p_object表示要添加到列表末尾的元素,可以是字符串,数字,也可以是一个序列。举个栗子:
name_list.append("Adam")print(name_list)name_list.append(["test", "test1"])print(name_list)
运行结果是:
["码农飞哥", "小伟", "小小伟", "Adam"]["码农飞哥", "小伟", "小小伟", "Adam", ["test", "test1"]]
可以看出待添加的元素都成功的添加到了原列表的末尾处。并且当添加的元素是一个序列时,则会将该序列当成一个整体。
第三种:使用extend()方法
extend()方法跟append()方法的用法相同,同样是向列表末尾添加元素。元素的类型只需要Python支持的数据类型即可。不过与append()方法不同的是,当添加的元素是序列
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/122579.html
文章目录 强烈推荐系列教程,建议学起来!! 一.pycharm下载安装二.python下载安装三.pycharm上配置python四.配置镜像源让你下载嗖嗖的快4.1pycharm内部配置 4.2手动添加镜像源4.3永久配置镜像源 五.插件安装(比如汉化?)5.1自动补码神器第一款5.2汉化pycharm5.3其它插件 六.美女背景七.自定义脚本开头八、这个前言一定要看九、pyt...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:一个软件测试在职老人帮你详细分析一下。在软件测试行业,前两点可以结合起来说,就是大环境和前景以及人才缺口的问题。软件测试属于互联网技术的一个分支,就是经常被提到的行业。你零基础转行嗷,良心奉劝你不要自学。 一个软件测试在职老人帮你详细分析一下。先不说软件测试领域,你想转行的话,得知道这个行...
阅读 725·2021-10-14 09:43
阅读 2045·2021-09-30 09:48
阅读 3417·2021-09-08 09:45
阅读 1072·2021-09-02 15:41
阅读 1856·2021-08-26 14:15
阅读 742·2021-08-03 14:04
阅读 2930·2019-08-30 15:56
阅读 3052·2019-08-30 15:52