python知识结构
2017-03-07 20:39:22 0 举报
AI智能生成
python知识框架(更新中)
作者其他创作
大纲/内容
数据类型
程序概念层级
最简单:表达式:创建处理对象
语句:包含表达式
包(文件夹)和模块(文件)
程序(多个文件夹)
变量与存储
变量:对象的别名
命名规则
字母数字下划线
不能以数字开头
不能包含空格
避免与python关键字和函数冲突
简短且具有描述性
区分大小写(类,为以大写开头,其他多用小写)
创建:第一次赋值时生成
数据类型
python是动态数据类型
变量的类型取决于关联的对象
其本身无类型的约束
存储
对象有'类型'后存储在内存区域
变量名指向实际的对象,变量本身无类型
对象本身带有类型描述级引用计数器
共享引用
多变量引用同一个对象
==:判断字面值是否相等
is:判断引用地址是否相同
id()全局内置函数:判断存储地址
0-255,自动缓存,只要引用都是共享
小型字符串也会缓存,但是较长较复杂的就会自动释放
python有垃圾回收机制
自动释放未被引用的对象
通过对象引用计数器统计引用
内置核心数据类型
数值类型
整型int|浮点型float
字面值
3.14e5,即3.14*10的5次方,314000.0
二进制:0b1101=13
八进制:0o177=127
十六进制:0x9ff=2559
数字运算符
+ - * / 加减乘除
** 计算数值的某次方:3**2=9
//整除:22//7=3
%取余:22%7=1
常用内置函数
int()强转为整型
int(“30”)=30
转为二进制整数 int("1101",2)=23
八进制:int(“9ff”,16)=2559
float()强转为浮点型
bin(10)='0b1010'转换为二进制
hex(10)='0xa' 转换为十六进制
oct() 转换为八进制
round(3.14)=3 四舍五入
工具模块
math
math.floor(3.99)=3 向下取整
math.floor(-3.99)=4
math.trunc(3.14)=3 只保留整数
math.trunc(-3.144)=-3
math.cell(3.14)=4 与floor相反,向上取整
math.pi 得到π的常量
pow(2,4)=16 2的四次方
math.sqrt(144)=12.0 开平方
decimal 精度更高的处理浮点型模块
Decimal('0.1')类,里面的参数需要以str的类型
两种导入类的方式
布尔型的本质
True本质是1
3+True=4
False本质是0
序列
可变序列
list列表 [ ]
包含任意类型的有序集合
通过下标索引访问元素(0,1,2,3,…-2,-1)
scores[0:2]反问第一到第三个范围内的值,第三个不显示
可变长度,异质(类型可多元),可任意嵌套(列表套列表)
支持原位改变
score[0]=85,列表第一个元素替换为85
对象引用数组
列表常用操作
排序
l.sort()【列表的函数方法】 从小到大排序
l.sort(key=lambda x:x[-1]) key是排序规则,lambda是一个排序的函数
l.sort(reverse=True) 从大到小排序
【全局函数】:sorted( l ) 基本等同 l.sort()
dict字典
可变序列的通用操作
改变某元素值
s[i]=x
改变特定范围内元素值
s[i:j]=t
t需是可迭代对象?可以是新的序列 [ ],数量未必与待替换对应
s[i:j:k]=t按照步长替换
必须给可迭代对象,且需要完全对应数量给定替换值
删除元素
del s[ i ]
del不是全局函数,只是操作符
del s[i:j]
del s[i:j:k]
s.remove(x) 【序列方法】 删除第一个匹配值
s.clear() 【序列方法】清空
追加元素
s.append(x)【序列方法】
将括号里的内容当一个值追加,比如是序列也会被追加
扩展序列
s.extend(x)【序列方法】
把括号内的元素独立的追加,而非像append一样当一个处理
插入元素
s.insert(i:x) 【序列方法】
检索并删除特定元素
s.pop([i]【序列方法】
中括号说明i可写可不写,不写时是最后一个
反转序列
s.reverse()【序列方法】
reverse只能影响被返回的序列,不会产生新的值
复制序列
s.copy()【序列方法】
l=s[:]
容易造成共享引用
不可变序列
tuple元组 ( )
特性
包含任意对象的有序集合
通过下标索引(位置偏移)访问元素
固定长度,异质,可任意嵌套
不支持原位改变
对象引用数组
元组申明
t=(1,2,3)
注意,只有一个元素时,需要有“,”如:t=(1,)
t=tuple(range(1,6))
直接申明:t=1,2,3
元组访问
t[ i ]
t[ i ] [ n ]i位置是一个嵌套的序列,n是嵌套序列中的下标索引
t [ i : j ] 范围访问
a,b=5,10 虽然是分别给ab赋值,实质是元组
a,b=b,a 可以进行赋值转换
range 范围()【函数】
生成数值序列,执行特定次数的循环
range(i,j,k(步长))
str 文本序列,字符串
字面值申明
单行字符串
“”
‘’
多行字符串
''' 多行字符串 '''
三引号内可以换行,这种换行信息会被保留
【转义字符】
'\n \n' 换行符
\t tab空格间隔
\a 响铃
\b 退格
\r 回车
\'
\"
\?
\0 空字符
\ooo 以八进制数声明字符
\xhh 以十六进制数生命字符
\与后面的字母容易组合成转义字符发生歧义
\\用第一个\转义,后面的\就能够正常显示
申明忽略转义字符:r"",r(raw)申明后面的字符串中忽略转义字符
常用操作
str() 类型转换【全局函数】
字符串“修改”
第一种:字符串拼接
str.replace(old,new,n(前几个替换))【字符串方法】
操作后会返回一个新值,但是原来的字符没有变,所以需要将新值重新赋值给原来的字符串
str.capitalize() 首字母大写
str.upper() 全部大写
str.lower() 全部小写
str.startswith('str') 判断是否以某字符开头
str.endswith('str') 判断是否以某字符结尾
str.isnumeric() 判断字符是否为数字
str.isalpha() 判断字符是否为字母
str.split() 拆分字符串(列表形式)
制定拆分字符
url='www.codeclass.com' url.split('.')——['www','codeclass','com']
不指定拆分字符
['www.codeclass.com']当做一个整体拆分成列表
str.join() 连接字符串(列表拼接)
lst=url.split('.') ':'.join(lst) ——'www:codeclass.com'
格式化字符串
python2
%
python3
str.format()
比较复杂,见onenote
通用操作
列表初始化
x=[1,2,3]
name=list('大家','我们')
list(range(5))=[0,1,2,3,4,5]
判断某值是否在某序列
x(元素) in s(序列)
T or F
x not in s
连接序列
s1 + s2
重复序列元素内容
s * n(重复次数)
[3]*4=[3,3,3,3]
访问某元素
s[ i(下标索引) ] 访问某一个元素
i=0 第一个元素
i=-1 最后一个元素
s [ i : j ] 访问某个区间
[ : 2] 第一个到第三个(不包含第三个)
[ 2: ] 从第三个元素开始到最后一个
[ : ] 全部
s[i:j:k(步长)] 按照步长访问索引范围
s[0:10:2] 从第一个要素开始每隔两个元素取一个值
获取序列长度函数
len(s)
返回序列最值函数
min(s))
max(s)
统计序列总和函数
sum(s)
检索某个元素第一次出现的位置下标【方法】
s.index(x(待检索元素的值))
统计元素出现次数【方法】
s.count(x)
子主题
集合
映射
dict 字典表
特性
通过key(而非下标索引)访问数据
可包括任意对象的无序集合
可变长度,异质,任意嵌套
可变映射分类
对象引用表(hash table))
声明字典
d={key1:value1, key2:value2}
key不可以是list这种可变元素
d=dict(key=value)【全局函数】
d=dict([(key1,value1).(key2,value2)]) 转现有的列表为字典
d=dict.fromkeys(keyslst(已有的列表)),能够得到value为None的字典【dict方法】
操作符/函数(全局)/方法:前面有个点才能用
常用操作
‘key’in dict
访问
不支持通过索引访问,dict['key']通过键访问
dict.get('key',default)default可以缺省(返回None),可以自己制定
比上一个好在于找不到不会抛出异常,可以弹出指定字符
dict.keys() 返回字典中所有的键 【方法】
dict.values() 返回所有value的值 【方法】
dict.items() 返回所有项[键值对] 【方法】
for (k,v) in dict.items():
len(dict)
复制字典
d2=d1.copy()【方法】
清空字典
dict.clear() 【方法】
修改value
dict[key]=value新 【方法】
更新合并
d1.update(d2) 【方法】
删除
del d1[key] 【全局函数】
dict.pop(key) 【方法】 弹出并返回值
dict.pop(key,None) 找不到会返回None,而非报错
dict.popitem() 弹出键值对的项
文件(文档)
声明
open('路径','模式',encoding='编码')【全局函数】
路径
'data.txt'相对路径,会在当前系统变量寻找
r'c:\[ath\data.txt' 绝对路径
import os (回车)os.getcwd() 获取当前目录
os.chdir('路径') 更改当前目录
模式
文本
'r' 读
'w' 写
eg: c=open('course.txt','w',encoding='utf8')
c.write('机构:优品课堂\n') 写入字符串,\n为换行符
写入如果想要在txt看到结果,需要先结束。c.close()就可以看到写入内容
c.writelines(list)一次写入多行
f.flush()不关闭链接,输出缓存到磁盘
'rw' 读写
'a' 追加
二进制(声音、视频)
'*b' 以二进制读取
编码要与文件存储的编码类型一致
utf8
gbk
eg:f=open(r'F:\Demo\data.txt','r',encoding='utf8')
f.seek(0) 将指针移动到开头,或者其他指定位置
f.close() 关闭文件链接【方法】
读取文件
f.read() 一次性读取所有到字符串,结束后指针在末尾
f.read(N) 读取有限数量的字节或文本
f.read(4) 读取四个字符,指针在第五个字符前
f.readlines() 读取所有的行到列表
f.readline() 读取一行
for line in f: 遍历迭代
程序单元类型
其他
类型对象
内置函数(直接用) type():查看数据是什么类型
空对象:None(特殊常量)
布尔bool
常量
True
False
函数
bool(3>1)=True
真值测试
等同于False的情况
0或0.0或空值,比如(),[],{},和“”和None
语句与流程控制
语句
赋值:创建对象的引用
eg:x=5
运行函数
eg:import math math.pow(x,2)
条件选择执行
if else
迭代语句
for in
循环语句
while True break
函数
eg:def
模块、命名空间、访问
import
from… import
类
异常处理
其他
语法
强制缩进:用4个空格
PEP8 python增强协定标准,代码编排说明
赋值语句
机制
赋值创建对象引用
名称创建于首次赋值
名称引用前必须赋值
某些操作会执行隐式赋值
案例
基本赋值
=
元组/列表赋值
(a,b)=(,)
[a,b]=[ , ]
序列赋值(解包)
org='优品课堂' a,b,c,d='优品课堂',则a是'优',b是'品'……
a,*b='优品课堂' 扩展解包:优给a,剩下的都给b
a,*b,c='优品课堂' 优给a,堂给c,剩下的给b
多目标赋值
a=b=5
参数化赋值
b+=10意思是b=b+10
顺序执行及输入输出
输入
input('提示信息') 默认str
name=input('请输入员工姓名:\n')
float(input('请输入员工薪资:\n'))
输出
print( )
pirnt("="*20)
输出为==================
print(name,job,salary,sep='|')手动制定分隔符
print函数在打印值的时候,自带终止符\n,所以会自动换行
print(name,end=',') 把最后的终止符由换行变为逗号连接
salary=8600,33333 print("薪资:{:,.2f}".format(salary)) 得到8,600.33
IDE集成开发工具
Pycharm
SublimeText
NotePad++
IDLE
Shell
编辑脚本文件
自由主题
自由主题
自由主题
自由主题
自由主题
自由主题
0 条评论
下一页