python基础
2020-07-28 13:57:04 66 举报
AI智能生成
登录查看完整内容
python基础知识点
作者其他创作
大纲/内容
python基础
注释及变量
单行注释
如何来表示?
用#来表示
注释后的代码不会被执行
多行注释
如何来表示
用'''或\"\"\"来表示
嵌套规则
如果外层使用三个双引号,内层必须使用三个单引号,反之亦然
变量
什么是变量?
可以改变的量,实际指代内存的一块空间
多个变量的定义
多个变量可用逗号隔开
变量的命名规则
字母数字下划线,首字符不能用数字。严格区分大小写,且不能使用关键字。变量命名有意义,且不能使用中文哦。
六大基本数据类型
Number类型
int类型
什么是整型?
数字0,正整数,负整数
进制整型
可用其他进制(二、八、十六)表示,print会自动将其转换为十进制
float类型
什么是浮点型?
含有小数点的数据都是浮点型
科学计数法
用e来表示,e后面的数字表示小数点向左(-)或向右移动几位
complex类型
什么是复数?
含有虚数的数据就是复数,表示为实数+虚数
表示方法
表示方法一
实数+虚数
表示方法二
bool类型
什么是布尔值?
True
False
str类型
什么是字符串?
用引号引起来的就是字符串
单引号、双引号、三引号
转义字符
\\ +字符
把无意义的字符转为有意义
把有意义的字符转为无意义
\
换行符
\\t
水平制表符
把\后面的字符拉到当前行首
\\
换行
元字符串
r+字符串
表示不转义字符,原型化输入字符串
list类型
定义一个空列表
listvar=[]
定义一个普通列表
正向索引下标
列表元素从左到右依次为:0,1,2,3,4,5...
逆向索引下标
列表元素从右到左依次为:-1,-2,-3,-4,-5...
如何获取(修改)列表元素
可通过正、逆向索引获取(修改)
列表的特点
可获取,可修改,有序
tuple类型
定义一个空元组
tuplevar=()
定义一个普通元组
如何获取元组中元素
可通过正、逆向索引获取
元组的特点
可获取,不可修改,无序
元组注意点
加逗号才是元组,逗号是元组标识符
set类型
定义一个空集合
setvar=set()
定义一个普通集合
集合中的元素不可获取
集合具有元素自动去重的功能
集合的特点
无序,自动去重
dict类型
定义一个空字典
dictvar={}
定义一个普通字典
如何获取(修改字典中的值)
通过键来获取(修改)值
字典的特点
键值对存储数据,表面有序实际无序
字典的键和集合的值要求
必须为可哈希数据类型
可哈希数据类型
Number型数据
字符串型数据
元组型数据
不可哈希数据类型
列表型数据
集合型数据
字典型数据
类型转换
Number强制类型转换
强制转换为整型
用int()强转
可转类型
浮点型
只保留整数部分
布尔型
True为1,False为0
纯数字字符串
转换为整型数字
强制转换为浮点型
用float()强转
整型
加.0
True为1.0,False为0.0
转为浮点型数字
强制转换为复数型
用complex()强转
加0j
True为1+0j,False为0j
对应数字+0j
强制转换为布尔型
用bool()强转
布尔值为假(False)的十种情况
0
0.0
0j
\"\"
[]
()
set()
{}
None
默认按照精度从低到高进行转换
bool -> int -> float -> complex
容器数据的强制类型转换
强制转换为字符串
用str()强转
可强转一切类型
转换后的类型为原类型套上引号变为字符串
强制转换为列表
用list()强转
只能转容器类型
强制转换为元组
用tuple()强转
和列表一样
强制转换为集合
用set()强转
强制转换为字典
用dict()强转
除字符串外的容器类型数据
必须是等长的二级容器
二级容器内的元素个数为2
运算符
算数运算符
+
两数相加
-
两数相减
*
两数相乘
/
两数相除,结果为小数
//
地板除,结果为整数,除非除数或被除数中含有小数
%
两数取余
**
幂运算
比较运算符(返回布尔值)
<
两数相比,a小于b
>
两数相比,a大于b
<=
两数相比,a小于等于b
>=
两数相比,a大于等于b
==
两数相比,a等于b
!=
两数相比,a不等于b
赋值运算符
+=
写法: a += b
-=
写法: a-= b
*=
写法: a *= b
/=
成员运算符
逻辑运算符
身份运算符
位运算符
基本语法
判断类型
type
判断给予属于属于哪个数据类型
isinstance
判断给定的值是否属于指定的一堆数据类型中,返回True或False
代码块和作用域
代码块
以冒号作为开始,用缩进来划分作用域
作用域
作用的区域,作用的范围
流程控制
流程
代码执行的过程
控制
对代码执行过程的一种把控
分支结构
单项分支
if 条件表达式: code1 code2
当条件表达式成立,返回True,执行对应的代码块,反之不执行。
双项分支
if 条件表达式: code1 code2else: code3 code4
多项分支
if 条件表达式1: code1 code2elif 条件表达式2: code1 code2elif 条件表达式3: code1 code2else: code1 code2
如果条件表达式1成立,返回True,执行对应代码块,反之则向下执行直到最后,任何条件都不满足,执行else。
巢状分支
单项、双项、多项分支互相嵌套
循环结构
while循环
while 条件表达式:\tcode1\tcode2
for循环
for循环的作用:遍历、循环、迭代
for 变量 in 可迭代的对象: code1 code2
range对象
结束值本身取不到,取到结束值之前的那个数
总结
1)while: 较为复杂的逻辑2)for : 数据的遍历3)while 和 for 部分代码可相互转换
循环关键字
pass
过(起占位作用)
break
终止当前循环
continue
跳过当前循环,从下一次循环开始
经典案例
代码见博客
打印十行十列★
打印十行十列 ★,隔列换色(☆)
打印十行十列★,隔行换色
99乘法表(四个方向)
求吉利数字100~999
百钱买百鸡
字符串进阶
字符串相关操作
字符串拼接
用+拼接
字符串的重复
用*进行重复输出
字符串跨行拼接
用\\跨行拼接
字符串的索引
字符串是有序容器类型数据,也可通过正向及逆向索引获取相应字符
字符串切片
字符串可通过索引及步长进行切片
字符串方法
capitalize
首字母大写
title
每个单词首字母大写
upper
所有字母大写
lower
所有字母小写
swapcase
字母大小写互换
len
计算字符串长度
count
计算字符串中某字符的个数
find
寻找字符串中某字符第一次出现的索引,如果找不到,返回-1
index
寻找字符串中某字符第一次出现的索引,如果找不到,则报错
startswith
判断是否以某字符或字符串开头,“字符或字符串”:开始索引:结束索引
endswith
判断是否以某字符或字符串结尾,“字符或字符串”:开始索引:结束索引
isupper
判断字符串是否都是大写
islower
判断字符串是否都是小写
isdecimal
判断字符串是否以数字组成
ljust
填充字符串,原字符串居左,默认填充空格
rjust
填充字符串,原字符串居右,默认填充空格
center
填充字符串,原字符串居中,默认填充空格
strip
默认去掉首尾两边空白符
rstrip
去掉右边某个字符,默认空白符
lstrip
去掉左边某个字符,默认空白符
split
按某个字符将字符串切割成列表,可指定切割次数
rsplit
从右向左按某字符切割字符串,可指定切割次数
join
按照某字符将列表拼接成字符串(容器类型皆可)
replace
字符串替换
字符串格式化
顺序传参
用{}代替要进行格式化的字符,format()括号内按顺序填写传参
索引传参
根据索引进行传参,可随意指定传参顺序
关键字传参
可根据关键字进行传参,可随意指定传参顺序
容器类型数据传参(列表、元组等)
format()括号内跟列表或元组,可通过索引获取其元素进行传参
format填充字符的使用
> 原字符居右
< 原字符居左
^ 原字符居中
进制转换等特殊符号的使用
:d
整型占位符(要求数据类型必须为整型)
:2d 占用两位,不够用空格来补,默认居右
可用> < ^来调整位置
:f
浮点型占位符(要求数据类型必须为浮点型)
:.2f 可保留小数点后两位
:s
字符串占位符(要求数据类型必须为字符串)
金钱占位符
将一堆纯数字字符串切割为三位一组
容器类型数据进阶
列表相关操作
列表的拼接(同元组)
两个列表相加可进行切片
列表的复刻(同元组)
一个列表进行乘法运算可进行复刻,类似于字符串
列表的切片
可通过索引正向或逆向截取
[开始索引:结束索引:步长] 从开始索引截取到结束索引之前按照指定的步长截取列表元素值
[开始索引:结束索引] 从开始索引处截取到结束索引之前
[:结束索引] 从列表开始截取到结束索引之前
[开始索引:] 从开始索引截取到列表最后
[:]或[::] 截取所有列表
列表的获取(同元组)
可通过索引获取元素
列表的修改(可切片)
要求的数据类型是: 可迭代型数据
容器类型数据
迭代器
列表的删除(可切片)
del +列表[索引]
列表相关函数
增
append
向列表末尾添加新的元素
insert
在指定索引之前添加元素
extend
迭代追加所有元素(容器类型数据)
删
pop
按照索引删除元素
remove
通过值进行删除
clear
清空列表
改、查
参考列表操作部分
深浅拷贝
浅拷贝
浅拷贝生成的变量不受原变量更改的影响
浅拷贝的两种方法
引入copy模块,copy.copy()
数据变量.copy()
深拷贝
如果是容器类型的数据,深拷贝可以拷贝多级容器
深拷贝方法
字典相关函数
dic[键]=值
fromkeys,使用一组键和默认值创建字典
通过键删除键值对
popitem
删除最后一个键值对
清空字典
改
update
存在就更改,不存在就添加
查
get
通过键获取值
集合相关操作
intersection
&
交集
difference
差集
union
|
并集
symmetric_difference
^
对称差集
issebset
子集
issuperset
父级
isdisjoint
不相交
集合相关函数
add
向集合中添加数据,一次加一个
向集合中迭代数据,一次加一堆
随机删除一个元素
指定删除一个元素,不存在则发生报错
discard
指定删除一个元素,不存在不删除
清空集合
冰冻集合
frozenset
集合冰冻后只能进行交差并补,不能增删
文件操作
文件的写入
打开文件
fp = open(\"文件名\
写入文件
fp.write()
关闭文件
fp.close()
文件的读取
读取文件
res=fp.read()print(res)
字节流转换
用来传输或存储的数据格式
b’1234’ b’abcd’ -->b开头的字节流,范围只能是ascii编码
如果是中文,需使用encode和decode进行编码和解码
encode
将字符串转为字节流
decode
将bytes流转化为字符串
存储二进制字节流
wb
读取二进制字节流
rb
文件扩展模式
read
读取字符个数(里面参数代表字符个数)
seek
调整指针位置(里面参数代表字节个数)
seek(0):将光标移动到文件开头
tell
当前光标左侧所有的字节数(返回字节数)
r+
先读后写
w+
可读可写
会清空文件,重新写入
a+
可读可写,追加
with语法
with open(\"文件名\
文件的相关函数
flush
刷新缓存区
readline
按行读取
readlines
将文件中的内容按行读取到列表中
writelines
将内容是字符串的可迭代数据写入到文件中
readable
判断文件是否可读
writable
判断文件是否可写
truncate
把要截取的字符串提取出来,然后清空内容将提取的字符串重新写入文件中
函数
基本概念
函数基本格式
定义函数
def func(): code1 code2
调用函数
func()
函数命名规则
字母数字下划线,首字符不能为数字。严格区分大小写,且不能使用关键字。函数命名有意义,且不能使用中文。
大驼峰命名法
每个单词首字母大写(定义类:面向对象)
小驼峰命名法
除了第一个单词首字符小写之外,剩下每个单词首字符大写
函数参数
形参
形式参数,在函数的定义处
普通形参
通过定义变量按顺序将实参传参
默认形参
形参上面有默认值,为默认形参
普通收集形参
专门用来收集多余没人要的普通实参
*args
命名关键字形参
专门用来收集多余的没人要的关键字实参
**kwargs
关键字收集形参
两种定义方式
实参
普通实参
定义具体数据并传向形参
关键字实参
关键字实参是对具体的某个参数赋值,具体的顺序可以打乱。
区分默认形参和关键字实参
默认形参在函数的定义处关键字实参在函数的调用处
*和**的用法
*和** 在函数的定义处,用来做收集操作,打包*和** 在函数的调用处,用来做打散操作,解包
参数定义的顺序
普通参数 -> 默认参数 -> 普通收集参数 -> 命名关键字参数 -> 关键字收集参数
return返回值
return + 六大标准数据类型 还有类和对象,函数如果不定义return,默认返回的是None在执行完return之后,立刻终止函数,后面的代码不执行
局部变量和全局变量
作用的范围
局部变量
函数内部定义的变量(在函数内部定义的变量)
局部变量作用域:在函数内部
全局变量
在函数外部定义的或者使用global在函数内部定义
全局变量作用域:横跨整个文件
可以使用global关键字在函数内部定义一个全局变量也可以使用global关键字在函数内部修改全局变量
函数名的使用
函数可销毁
del +函数名
函数名可作为容器变量元素
函数名可以作为函数的参数
函数名可作为函数的返回值
return +函数名
函数的嵌套
外函数
外层的叫外函数
内函数
内层的函数叫内函数
LEGB原则
找寻变量的调用顺序采用LEGB原则(即就近原则)
L
Local(function);当前函数内的作用域 (局部作用域)
E
Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
G
Global(module); 函数外部所在的命名空间 (全局作用域)
B
Builtin(Python);Python内置模块的命名空间 (内建作用域)
nonlocal修改局部变量
nonlocal遵循LEGB就近找变量原则
闭包函数
什么是闭包函数?
如果内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程,叫做闭包。
获取闭包函数使用的变量
__closure__
获取单元格对象当中的闭包函数
cell_contents
闭包函数的特征和意义
闭包函数的特征
闭包函数的意义
匿名函数
用一句话来表达只有返回值的函数叫做匿名函数,目的追求代码的简洁高效
语法:lambda 参数 : 返回值
高阶函数
什么是迭代器?
迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的
迭代器的特征
不依赖于索引,而通过next指针迭代所有数据,一次只取一个值,大大节省空间
可迭代对象
容器类型数据、range对象、迭代器
如何定义一个迭代器
如何判断一个迭代器
如果it中含有iter和next两种魔术方法,那么其类型为迭代器
Iterator
如何调用一个迭代器
map
语法
功能
把Iterable中的数据一个一个拿出来,扔到func中做处理把处理后的结果放到迭代器中,最后返回迭代器
参数
func:自定义函数Iterable:可迭代性数据(容器类型数据、range对象、迭代器)
返回值
filter
return True 当前这个数据保留return False 当前这个数据舍弃
reduce
计算数据
计算之后的结果
sorted
排序
排序后的结果
与sort的区别
推导式
列表推导式
语法:[val for val in Iterable]
单循环推导式
带有判断条件的单循环推导式
双循环推导式
带有判断条件的双循环推导式
集合_字典推导式
集合推导式
语法:{val for val in Iterable}
字典推导式
zip
enumerate
生成器
什么是生成器
生成器本质是迭代器,允许自定义逻辑的迭代器
生成器和迭代器的区别
创建生成器的两种方式
yield与return的共同点及区别点
共同点
执行到这句话都会把值返回出去
区别点
send
next与send区别
注意点
第一个 send 不能给 yield 传值 默认只能写None最后一个yield 接受不到send的发送值send 是给上一个yield发送值
yield from
可将一个可迭代对象变成一个迭代器返回
0 条评论
回复 删除
下一页