提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
本文综合我现阶段学习Python的一些小感受,综合写了这一篇学习Python小总结,由于内容有点小多,分三篇来撰写~~
提示:以下是本篇文章正文内容,下面案例可供参考
1、认识Python
1.1Python的背景知识
1.1.1Python 是怎么来的?
- 吉多.范罗苏姆(Guido van Rossum)是一个荷兰的程序员(人称龟叔)在1989年圣诞节,因为呆在家里无聊,为了打发时间,开始了Python的开发。正式版本发布于1991年。
龟叔---------->
丫!正所谓牛人的世界咱不懂,但咱不得不佩服人家的能力,闲暇之余,开天辟地,正是我等的心中所想丫。
经典语录:
“人生苦短、python是岸”!!!
- 这里既然说到1991年,简单陈列一下这个不平凡年份所发生的大事:
Python、万维网、Linux,Vim,Qt,第一台笔记本电脑,都诞生于这一年,不平凡之年丫!!!!!!!!!!!!!
1.1.2Python 都能干点啥?
经过了多年的发展,Python 目前是一个应用场景非常广泛的编程语言。具体有以下应用场景
- 科学计算和数据分析
- Web开发(网站的搭建)
- 自动化运维
- 人工智能
- 爬虫程序
- 自动化测试
1.1.3Python的优缺点
优点:
- 语法言简意赅,容易上手,比C应该说语法操作啥的简单的多
- 功能强大,用途广泛
- 生态丰富,具有海量的成熟第三方库(后面会详细介绍)
- 方便调用C/C++编写的代码进行高性能/系统级操作
缺点: - 执行效率比较弱
- 对于多核心并发程序支持偏弱
- 动态类型系统对于大型项目不太友好
1.2Python环境的搭建
要想能够进行Python的开发,就必须要搭建好Python的环境,而需要安装的环境主要是两部分:
运行环境:Python
开发环境:PyCharm
- 安装Python–Python运行环境的搭建
(1).找到官方网站
在百度中搜索python,然后再网页中找到python的官方网站进行下载
(2).点击Downloads下载
注意Python的版本再持续更新当中,大家看到的版本不一定和我这里的完全一致,但是基本不影响正常学习使用
下载完成后会得到一个安装包
(3)双击安装包来进行python的安装
- 注意:最好勾选“Add Python 3.10 to PATH”这个选项,后续在使用安装第三方库的时候方便我们操作
安装完成后我们打开Python基本得到以下界面(从开始菜单上搜索python)
(4).简单输入运行hello world
这样Python的运行环境就搭建好了
虽然通过交互式解释器可以执行Python代码了,但是代码写起来并不方便,就需要更专业的开发工具来编写Python代码
目前界面上最常用最主流的Python开发工具有PyCharm 和VS Code 这里我们主要介绍PyCharm
-
PyCharm–Python开发环境的搭建
-
Pycharm环境的搭建
(1).找到官方网站
这里官网主要要认准“jetbrains.com”这个域名!!!
(2).找到下载界面
点击Download后来到下载界面拉至网页最下面找到社区版(Community)来进行下载即可(现阶段社区版就足以,免费的)
在这里PyCharm有三个版本:
专业版(Professional Edition)
社区版(Community Edition)
教育版(Educational Edition)
专业版相比于社区版,功能要更丰富一些,但是专业版收费,社区版免费。教育版功能与专业版相同,但是需要凭借edu邮箱去JB官网申请。
下载完后会出现exe安装程序
(3).双击安装包
这里安装过程中记得要把Add "Open Folder as Project"选项要勾中
这样子就把python的运行环境与开发环境给安装好了,具体pycharm的使用比较简单,这里不做过多阐述,如果想深入了解一下的话,可以参考哔哩哔哩上的视频进行详细学习。
2、Python基础语法——1
2.1常量和表达式
以一段代码来说明常量和表达式
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
在以上代码注意:
- print 是一个Python 中的内置函数,后面说到函数章节会详细说一下
- 可以使用±*/()等运算符进行算术运算,先算乘除,后算加减
- 运算符和数字之间,可以没有空格,也可以有多个空格,但是一般习惯上写一个空格(比较美观)
在这里形如“1+2-3”这样是算式,,在编程语言中称为表达式,而算式的结果称为表达式的返回值,其中1,2,3这种称为字面值常量,±*/称为运算符或者操作符
在这里要注意涉及到小数截断问题,在C或者Java中2/3会被认为结果为零(小数部分被截断),但是在Python中得到的 结果则是一个小数,更加符合日常生活中的直觉,但是这样的结果也不是准确的,程序结果最后一位是5显然是不正确的,这涉及到浮点数在内存中的存储知识,后面会阐述一下
- 小应用->计算67.5,89.0,12.9,32.2这四个数的平均数
print((67.5 + 89.0 + 12.9 + 32.2)/ 4)
这里很显然结果有微小的偏差,这与浮点数在内存中的存储有关
2.2变量与类型
2.2.1变量是什么
- 有时候我们需要进行复杂的计算,需要把一些计算的中间结果给保存起来,这时候我们就需要用到变量
计算67.5,89.0,12.9,32.2这四个数的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)
在上面的代码中,avg,total,result 均为变量
- 同时我们又可以换个角度理解,变量可以视为一块能容纳数据的空间,这个空间往往对应到“内存”这样的硬件设备上。
联系我们的日常生活,我们可以把内存想象成一个宿舍楼,这个宿舍楼上有很多的房间,每个房间都可以存放数据,衡量内存的一个重要的指标就是内存空间大小,而我们现在的电脑一般是16GB,或者8GB,这个数字越大,意味着内存的存储空间越大,能够存放的数据(变量)就越多
2.2.2 变量的语法
- 定义变量:
a = 10
在这里创建变量的语句非常简单,其中
a 为变量名, 当我们创建很多个变量的时候,就可以用名字来进行区分;
‘=’为赋值运算符,表示把‘=’右侧的数据放到‘=’左侧的空间中
注意我们给变量命名的时候要遵守一定的规则:
(1).硬性规则(必须要遵守的)
变量名由数字、字母、下划线构成;
数字不能开头;
变量名不能和“关键字”重复;
变量名的大小敏感,num和Num是两个不同的变量名
(2).软性规则(建议遵守)
变量名可以由多个单词构成,长一点没有关系,重要的是含义要表达清楚;
当变量名包含多个单词的时候,建议可以使用“驼峰命名法”形如“totalCount、personInfo”即除了首个单词外,剩余单词首字母大写;
另外关于变量的命名还要提醒一点:
数学上, 变量通常使用 x, y, z 这种简单的英文字母或者拉丁字母表示. 但是在编程中不建议这样使用,原因是编程中, 一个程序里通常会同时创建出很多个变量. 如果只是使用单个字母表示, 在变量多了的时候, 就很难记住哪个变量是干啥的, 从而给维护程序带来了一定的困难. 因此我们更建议使用带
有明确描述性的名字, 来表示变量的用途.
- 使用变量
(1).读取变量
a = 10
print(a)
(2).修改变量
a = 10
print(a)
a = 20
print(a)
这里修改变量也是用’=',其实看起来和定义变量没有明显区别;
同时我们也可以用另外一个变量的值赋给另一个变量
a = 10
b = 20
print(a)
a = b
print(a)
2.2.3 变量的类型
注意 变量里面存储的不仅仅是数字,还可以存储其他种类的数据,为了区分不同种类的数据,我们引入了“类型”这样的概念,下面介绍几种常用类型
- 常用类型:
(1).整型
a = 10
print(type(a))
这里type是一个python的内置函数,用来显示变量的数据类型;
这里的整型和C++/Java等的语言不同,Python的int类型变量,表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大小的数据,但是初始分配的是4个字节,并且关于整数,python只有整型这一个类型,也没有long,short类型,比较单一
(2).浮点型
a = 0.5
print(type(a))
注意:这里的浮点数与C++/Java等语言不同,Python的小数只有float一种类型,没有double类型,但是实际上Python中的float就相当于C++/Java的double,表示双精度浮点数
(3).字符串类型
a = 'hello'
print(type(a))
注意:在Python中,单引号构成的字符串和双引号构成的字符串,没有区别,‘hello’和“hello”是完全等价的
关于字符串的基本操作有字符串的拼接和获取字符串的长度
求字符串的长度:
a = 'hello'
print(len(a))
进行字符串的拼接:
a = 'hello'
b = 'world'
print( a + b)
当然,这里知识最简单的操作,字符串作为开发中最常用到的类型,支持的操作也是非常丰富的,此处就不过多展开。
(4).布尔类型
布尔类型是一个特殊的类型,他只有两种取值:True(真)、False(假)。
对于布尔类型我们可以联想到数学中的真假命题
a = True
print(type(a))
b = False
print(type(b))
布尔类型在后续咱们进行逻辑判断的时候,是非常有用的
(5).除了上述类型之外Python中还有list,tuple,dict,自定义类型等等,下面内容会详细介绍。
- 为什么要有这么多类型呢?
(1).类型决定了数据在内存中占据多大的空间
例如 float 类型在内存中就占据了8个字节
关于字节来展开说一下:
在计算机里面使用二进制来表示存储,也就是每个位只能表示0或者1.一个二进制位,就称为一个“比特”,8个二进制位,就成为一个“字节”(Byte)一个float变量在内存中占据8个字节空间,也就是64个二进制位
(2).类型其实约定了能对这个变量做什么操作
例如int/float类型的变量,可以进行±*/等操作
而str类型的变量,只能进行+(行为是字符串拼接)不能进行- * /,但是还能进行len等特殊其他操作等
类型系统其实是对变量进行“归类”。相同的变量(数据)往往具有类似的特性和使用规则
- 动态类型特性
Python中,一个变量是什么类型,是可以在“程序运行”过程中发生变化的,这个特性称为“动态类型”
a = 10
print(type(a))
a = 'hello'
print(type(a))
如上代码所示,在程序执行的过程中,a的类型刚开始是Int,后来变成了str.这就是动态类型,Python就是这样的类型
这可不得了丫, 这更加方便了我们使用变量,特别的灵活,像C++/Java语言中则是不允许这样的操作的,一个变量定义后类型就固定的了,这种特性则成为“静态类型”
但是动态类型是一把双刃剑:
(1).对于中小型程序,可以大大的解约代码量(比如写一段就可以同时支持多种类型)
(2).对于大型程序,则提高了模块之间的交互成本(程序员A提供的代码难以被B理解)
2.3 注释的相关内容
2.3.1 注释是什么?
- 注释是一种特殊的代码,它不会影响程序的执行,但是能构起到解释说明的作用,能够帮助程序员理解代码的执行逻辑
我们程序员在写代码之后的读代码过程是一个非常烧脑的事情,相比于一板一眼的代码,一些口语化的描述能更好的帮助程序员理解程序
# 计算4个数字 67.5,89.0,12.9,32.2的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)
如果不给上面的注释,我们只看孤零零的代码会显得晦涩难懂,但我们给了计算方差的注释,很容易就get到了这段代码的意图,
所以写注释不光是方便别人理解,也是为了方便3个月之后的自己理解~~~
我们写代码的第一目标是容易理解,第二目标才是执行正确
- 一个反例就是医生给咱开的处方药。要是不加这些红色小字,拿基本上与天书无异~~
2.3.2注释的语法
在Python中有两种风格的注释
- 注释行
使用 # 开头的都是行的注释
# 这是注释行的注释!
- 文档字符串
使用三引号引起来的称为“文档字符串”,也可以视作一种注释。
可以包含多行内容;
一般放在文件/函数/类/的开头;
‘’’ 或者"""均可(等价)
'''
这是文档字符串
123456
'''
2.3.3 注释的规范
(1).内容准确:注释内容要和代码一致,匹配,并在代码修改时及时更新
(2).篇幅合理:注释不应该太精简,也不应该长篇大论
(3).使用中文:一般中国公司都要求使用中文写注释,
(4).积极向上:注释中不要包含负能量
2.4 输入和输出
程序需要和用户进行交互
用户把信息传递给程序的过程,称为“输入”
程序把结果展示给用户的过程,称为“输出 ”
输入输出的最基本方法就是控制台。用户输入一些字符串,程序再通过控制台打印出一些字符串
在PyCharm中运行程序,下面弹出的窗口就可以视为式控制台
而Windows自带的cmd,也可以视为控制台
输入输出的最常见的图形化界面。如我们平时用的qq,浏览器,steam等,都不需要输入命令,而只是通过鼠标点击窗口点击按钮的方式来操作
2.4.1 通过控制台输出
这里主要介绍Python的内置函数 print
print结束时候自带一个默认换行参数。
Python使用print函数输出到控制台
- print可以输出任意单一类型:
a = 10
print(a)
a = 1.0
print(a)
a = 'hello'
print(a)
a = True
print(a)
但是更多的时候,我们希望输出的内容是混合了字符串和变量的
- print 的格式化输出
我们的格式就是print(f"字符串+{变量}")
num = 10
print(f"num={num}")
注意:
使用 f 作为前缀的字符串,称为f-string;
里面可以使用 { } 来内嵌一个其他变量/表达式
这里只介绍一种格式化字符串的方法,其他的后期大家可以自习了解
2.4.2通过控制台输入
咱们这里介绍input函数
Python使用input函数,从控制台读取用户的输入
num = 0
num = input('请输入一个整数:')
print(f"你输入的整数是{num}")
注意:
input 的参数相当于一个“提示信息”,也可以没有,但是最好写上提示;
input 的返回值就是用户输的内容,是字符串类型
a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
print(f"a+b={a+b}")
这里的a和b都是字符串类型,+操作只是简单的字符串拼接,故而得到结果为1020.
而我们要真正做到整数的相加需要强制类型转换
a = input("请输入第一个整数:")
b = input("请输入第二个整数:")
a = int(a)#强转成int类型
b = int(b)#强转成int类型
print(f"a+b={a+b}")
2.5运算符
2.5.1 算术运算符
±*/ % ** //这种算术运算的运算符,称为算术运算符
对于算术运算符我觉得应该注意以下几点:
- 对于除法运算(/)中0作为除数的时候,会出现报错的情况
print(10/0)
- 整数/整数,结果可能是小数,而不会截断
print(1/2)
print(2/3)
- %是求余运算
print(7%2)
- **是 求乘法运算,这里不光能求整数次方,还能求小数次方
print(2**2)
print(4**0.5)
- //是求取整除法(也叫做地板除)。整数除以整数,结果还是整数(舍弃小数部分,并向下取整。不是四舍五入)
print(7//2)
print(-7//2)
这里因为是向下取整,所以-7//2得到的结果是-4
2.5.2 关系运算符
像< <= > >= == !=这一系列的运算符称为关系运算符。它们是在比较操作数之间的关系
关于关系运算符注意以下几点:
- 如果关系符合,则表达式返回True,如果关系不符合,则表达式返回False
a = 10
b = 20
print(a<b)
print(a<=b)
print(a>b)
print(a==b)
print(a!=b)
- 关系运算符不光针对整数/浮点数进行比较,还能针对字符串进行比较
a = 'hello'
b = 'world'
print(a<b)
print(a<=b)
print(a>b)
print(a==b)
print(a!=b)
对于字符串之间的比较在python中我们直接使用==和!=来判断字符串内容是否相等(这和C和Java不同);
字符串比较大小,规则是“字典序”
关于“字典序”:
想象一个英文字典,上面都是按照字母顺序排列,如果首个字母相同,就比较第二个字母。我们认为一个单词在字典上越靠前,就越小,越靠后,就越大
- 对于浮点数来说,我们不是靠==来判断是否相等的,因为涉及到浮点数的存储存在这偏差
print(0.1+0.2==0.3)
按照常理来说0.1+0.2应该等于0.3,但是浮点数在计算机中的表示并不是精确的!在计算过程中存在非常小的偏差
print(0.1)
print(0.2)
print(0.3)
print(0.1+0.2)
而对于浮点数的比较,我们应该不再要求浮点数是完全相等的,而是判定差值小于允许的误差范围
a = 0.1+0.2
b = 0.3
print(-0.000001<(a-b)<0.000001)
联系实际生产,在工程实践中,误差是在所难免的,只要保证误差在合理的范围内即可。
2.5.3 逻辑运算符
像 and or not 这一系列的运算符称为逻辑运算符
- 逻辑运算符介绍:
and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)
or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)
not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True.
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)
对于以上代码,a<b and b<c这种操作等价于 a<b<c.
这种设定和大部分编程语言都不相同。
- 短路求值——关系运算符的应用
和其他编程语言类似, Python里面也存在短路求值规则即:
对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行;
对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行;
print(10>20 and 10/0 == 1)
print(10<20 or 10/0 == 1)
在这里代码没有抛出异常,说明右侧除以0 的操作根本没有执行。
2.5.4 赋值运算符
- ‘=’的运用:
a = 0
b = 10
print(a)
print(b)
‘=’表示赋值, 这里注意与‘’区别,‘’是判断的意思,‘=’除了基本的用法对于单个变量的赋值后还有准对多个变量的赋值,主要介绍链式赋值以及多元赋值
链式赋值: a = b = 10;
多元赋值: a,b = 10,20;
对于多元赋值的小应用——>交换两个变量
a = 10
b = 20
a,b = b,a
print(a)
print(b)
- 复合赋值运算符:
Python 还有一些 复合赋值运算符 如+=,-=,*=,/=,%=
例如a+=1等价于a=a+1
a = 10
a+=1
print(a)
b = 20
b+=1
print(b)
注意:像C++/Java中,存在着++,–这样的自增/自减运算,而Python中不支持这种运算,为了避免++,–容易分不清前置和后置问题,python直接使用+=1和-=1.
2.5.5 其他运算符
除了上述之外,Python还有一些别的运算符
例如身份运算符(is,is not),成员运算符(in , not in),位运算符(& | ~ ^ << >>)这里不作过多介绍,有需要的话可以查阅一下资料
总结
本文主要介绍了python的一些小知识和一小部分基本语法,后期会接着介绍,有错误请批评指正,感谢支持!