Python知识点
基本语法
字面量:在代码中,被写下来的固定的值(=常量)
常见值类型
a)数字 1)整数【int】
2)浮点数【float】
3)复数【complex】
4)布尔【bool】true/false
b)字符串
三种定义 1 单引号
2 双引号
3 三引号(和多行注释写法相同,支持换行)
字符串拼接 字符串+字符串(不能是数字等其他类型拼接)
字符串格式化 %s占位拼接(%占位,s 将变量变成字符串)
%s
%d
%f
字符型
整形
浮点型
例 “我叫%s,是一名%s” %(顾皓,学生)【顺序占位】
快速格式化字符串 语法 f”内容{变量}”【不做精度控制 类型不论】
数字精度控制(m.n)【m控制宽度(!宽度大于数字本身) .n控制小数点精度(会四舍五入)】
对表达式进行格式化
表达式【一条具有明确执行结果的代码语句】
c)列表
d)元组
e)集合
f)字典
注释
a)单行注释#( 规范:#和注释内容以一个空格隔开)
规范是习惯,如果不做,也不是错误
b)多行注释(支持换行)””” ””””
变量:在程序运行时,能存储计算结果或能表示值的抽象概念
定义格式:变量名称=变量的值
数据类型
type()查看数据类型(可以用变量接收)
变量没有类型,变量存储的数据是有类型的
数据类型转换
整数转字符串 符号转字符串
任意类型可以转字符串
字符串不一定可以转化为其他类型
标识符:内容的标识
变量名、方法名、类名……统称——标识符
命名规则
1)内容限定:英文、中文(不建议使用)、数字、下划线(_)
【数字不可以用在开头】
2)大小写敏感
3)不可以使用关键字
运算符
算术运算符
+
-
*
/
//
%
**
加
减
乘
除
取整除
取余
指数
赋值运算符
= 将右边结果赋给左边
复合赋值运算符
+=
-=
*=
/=
%=
**=
//=
数据输入(input())
Input()从键盘中获取输入。用一个变量接收
print(“请告诉我你是谁?”) name = input()
等价于 name = input(“请告诉我你是谁?”)
获取到的类型是字符串类型
判断语句
比较运算符
==
!=
>
<
>=
<=
条件语句(结果要有4格缩进)
语法
1) if 条件:
结果
四个空格
2) If 条件:
结果
else:
结果
3)if 条件:
结果
elif 条件:
结果
……
else:
结果
4)if 条件:
if 条件:
结果
空格缩进决定逻辑关系
循环语句
语法
1 while 条件:
事情
2 while 条件:
while 条件:
事情
print(“ ”,end=’ ‘) print输出不换行
制表符 \t
for 临时变量 in 待处理数据集
事情
无法定义循环条件,只能被动取出数据处理
range(a,b)指a到b-1
continue 临时跳过
break 终止循环
函数:组织好的,可重复使用的,用来实现特定功能的代码段
提高程序的复用性、减少重复性代码、提高开发效率
语法
def 函数名(传入参数):
函数体
return 返回值
调用 函数名(参数)
参数、返回值可以省略
None 返回值空
If判断中None=False
函数说明文档=注释,方便阅读
局部变量:函数体定义的变量,在函数体内有效
全局变量:在函体外定义,在函数体内外都可以使用
globe在函数体内声明函数体内变量是全局变量
数据容器:一个可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。每一个元素都可以是任意类型的数据
可以容纳多个数据 【批量使用、存储数据】
分为五类:列表、元组、字符串、集合、字典
列表
特点:1)可以容纳2**63-1个元素
2)可以容纳不同类型的元素
3)数据是有序存储的
4)允许重复数据存在
5)可以修改
变量名称=[ , , …… ,] / 变量名称=list( )
列表的下标索引【可以反向索引】
正0,1,2,3……
反-1,-2,-3……
取特定元素 列表[ ?]
方法:由class(类)组成的代码段
查询指定元素的下标 列表.Index(元素)
修改下标索引值 列表[下标]=值
插入元素 列表.Insert(下标,元素)
追加元素:将指定元素,追加到列表的尾部
列表.append(元素) 追加一个元素
列表.extend(其他数据容器) 追加多个元素
元素的删除
del列表[下标]
列表.pop(下标) 删除的元素可以用返回值得到
列表.remove(元素) 从前往后搜索元素,删除第一个找到的元素
列表.clear( ) 清空列表
统计元素出现的次数 列表.count(元素)
统计列表有多少元素 len(列表)
遍历、迭代:将容器内的元素依次取出进行处理
while循环 while循环适用于任何想要循环的场景
for循环 for循环适用于遍历数据容器或简单的固定次数循环场景
元组
变量名 = ( , ,……,) /变量名 = tuple( )
【一旦定义就不可以修改】
特例:元组内嵌套列表,列表元素可以修改
取元素 变量名[下标]
index( ) 查找某个元素
count( ) 统计某个数据在当前元组出现的次数
len( ) 统计元组内的元素个数
元组遍历
字符串 【不可以修改】
取字符串元素 变量名[下标]
字符串的替换 (功能:将字符串中全部x替换成z)
字符串.repace(字符串1,字符串2)
不要修改字符串本身,而是得到了一个新字符串!
字符串分割(功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中)
字符串.split(分隔符字符串)
字符串本身不变,而是得到了一个列表对象
字符串规整操作
字符串.strip() 不传入数据,则去除前后空格
字符串.strip(字符串) 去除前后指定字符串
例:(12)去除字符串中1和2
序列:内容连续、有序,可使用下标所应的数据容器
列表、元组、字符串都是序列
切片:从一个序列中取出一个子序列
语法 序列[起始下标:结束下标(不含):步长]
起始下标可以留空,表示从头开始
结束下标留空,表示截取到结尾
步长表示:依次取元素的间隔
例:1表示一个个取元素(步长1可以省略)
N表示每次跳过N-1个元素取
步长可以为负,表示反向取(起始下标、结束下标也要反向标记)
不会影响序列本身,而是生成新的序列
集合:不重复,无序【不支持下标索引】
变量名={ } /变量名=set( )
添加新元素 集合.add(元素)
移除元素 集合.remove(元素)
随机取出元素 集合.pop( )【有返回值】
清空集合 集合.clear( )
取两个集合的差集 集合1.difference(集合2) 【原集合不变】
取出集合1中与集合2不同的元素
消除两个集合的差集 集合1.difference_update(集合2) 【集合1改变】
消除集合1中与集合2相同的元素
2个集合合并 集合1.union(集合2) 【原集合不变】
将集合1和集合2组合成新集合
统计集合元素数量 len.(集合)
集合的遍历 集合不支持下标索引,so while循环X
字典:通过key 找到value 【键值对】 【不可以key重复】
key不可以是字典,其他类型可以
字典={ : , : ,} / 字典=dict()
新增元素:字典[key]=value 【如果key不存在】
更新元素:字典[key]=value 【如果key存在】
删除元素:字典pop(key)
清空元素:字典.clear()
获取全部的key: 字典.keys()
遍历字典:for循环(获取keys 对字典循环)
例:for key in keys for key in dict
统计字典的元素数量: len(字典)
数据容器总结:
都可以遍历【集合和字典不可以用while循环】
统计容器的元素个数:len(容器)
统计容器的最大元素:max(容器)
统计容器的最小元素:min(容器)
转换 list(容器)【将指定容器转换成列表】
str(容器)【将指定容器转换成字符】
tuple(容器)【将指定容器转换成元组】
set(容器)【将指定容器转换成集合】
字典转换成列表和元组会丢失value,转换成字符串会保留
给指定容器排序 由小到大sorted(容器)【排序结果是列表】
由大到小sorted(容器,reverse=true)
字符串大小比较 按位比较 【ASC11码】
函数
1. 函数多返回值
函数只会返回第一个return
return可以返回多个返回值,用多个变量接收 【支持不同类型】
例:def test()
return 1,2
x,y=test()
2. 函数多种传参方式
位置参数:调用函数时根据函数定义的参数位置来传递参数
传递的参数与定义的参数的顺序及个数必须一致
关键字参数
函数调用时通过“键=值”形式传递参数
作用:可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求
函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
不定长参数(可变参数)
用于不确定调用的时候会传递多少个参数
作用:当函数调用时不确定参数个数,可以使用不定长参数
A) 位置传递
例: def test(*args)
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组类型
B) 关键字传递
例: def test(**kwargs)
参数是“键=值”形式的形式的情况下,所有的“键=值”都会被kwargs接受,同时会根据“键=值”组成字典
缺省参数(默认参数)
用于定义函数,为参数提供默认值,调用参数时可不传该默认参数的值
所有位置参数必须出现在默认参数前,包括函数定义与调用
默认函数定义从右向左
作用:当调用函数时没有传递参数,就会使用默认是用缺省参数对应的值(函数调用时,如果为缺省参数传值则修改默认参数,否则使用这个默认值)
3. 匿名函数
A) 函数作为参数传递
函数可以作为参数传入函数
计算逻辑的传递,而非数据的传递
B)lambda匿名函数
def定义带有名称的函数
lambda定义匿名函数
有名称的函数,可以基于名称重复使用
无名称的函数,只可临时使用一次
lambda 传入参数:函数体(一行代码)
·lambda 表示定义匿名函数
·传入参数表示匿名函数的形式参数,如:x,y表示接收2个形式参数
·函数体,就是函数的执行逻辑 【只能写一行,无法写多行代码】
例:test(lambda x,y:x+y)
编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑
打开文件 文件对象=open(name,mode,encoding )【也可以创建新文件】
name:打开的目录文件名的字符串(可以包含文件所在的具体路径)
mode:设置文件打开的模式(访问模式):只读r、写入w、追加a等
encoding:编码格式(推荐使用UTF-8)
模式
描述
r
以只读的方式打开。文件的指针将会放在文件的开头
w
打开一个文件用于写入,如果该文件已存在则打开文件,并从开始编辑,原内容会被删除。
a
打开一个文件用于追加,如果该文件已存在,新的内容将会被写到已有内容之后。如果该文件不存在,创建新文件进行写入。
文件对象.read(num) 【num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,则表示读取文件中所有数据】
文件对象.readlines() 【可以按照行的方法把整个文件中的内容进行一次性读取,并且返回的是一个列表,并且每一行的数据为一个元素】
文件对象.readline() 【一次读取一行内容】
多个read是从上个read结尾开始
关闭文件 文件对象.close() 【如果不关闭,文件一直被Python占用】
with open(name,mode)as 文件对象 【自动完成close】
文件写入 文件对象.write(内容) 【存储在缓冲区】
内容刷新 文件对象.flush()
捕捉异常的作用在于:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。
try:
可能出现错误的代码
except:
如果出现异常执行的代码
try:
可能出现错误的代码
except 错误类型(Exception所有异常【顶级异常】) as a:
如果出现异常执行的代码
else:
与try代码相连接代码
finally: #无论有无异常都执行
代码
异常的传递性
Python模块是一个Python文件,以.py结尾 模块能定义函数,类和变量,模块里也能包含可执行的代码。
作用:python中有很多各种不同的模块,每个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块。我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用进而实现各种不同的功能。
模块的导入方法
语法[from模块名]import[模块|类|变量|函数|*] [as 别名] #[]代表可选
常用组合
·import 模块名 #导入模块
·from模块名import类、变量、方法等
#导入模中特定功能
from模块名import*与import模块名区别:运用方式不同
from模块名import* 功能名
import模块名 模块.功能名
·import模块名as别名 / from模块名import功能名as别名
#给具体模块/功能改名
自定义模块时测试内容前输入main 可以测试函数,在主文件中调用
【测试内容对调用无影响】
模块中有‘all’变量使用‘from xxx import *’,只能导入这个列表中的元素
all=[函数]
Python包:一个文件夹
【包含了一个__init__.py文件,可以包含多个模块文件,本质仍是模块】
_all_=[]写在_init_.py文件中
第三方包(非Python官方)
安装步骤
方法一
·搜索cmd 打开命令提示符
· pip install 包名(国外网站,下载速度慢)
·pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名(速度快)
方法二
·打开pycharm ,点击右下角python,选择解释器设置
·点击软件包上方的’+’,输入添加的包名
·选择指定版本,并安装
·点击选项,输入https://pypi.tuna.tsinghua.edu.cn/simple,点击下载