python初学知识,内容主要整合了慕课网的课程知识,一个很棒的学习网站
一、基础
1. 基础数据类型
- 整数
- 二进制:0b开头
- 十六进制:0x开头
- 浮点
- 字符串: “ABC”、’ABC’
- 单字符转义:\
- 单个字符串(行)转义,表示一个raw字符串,里面的字符不用转义:r’ xxxxx ‘ (不包括’’,””)
- 多行转义:’’’ xxxxxx ‘’’
- 多行单个字符串(raw字符串): r’’’ xxxxxxx ‘’’
- 布尔:True、False
- 运算:and、or、not(优先级最高)
- 空值:None
2. 变量
- 弱类型,根据赋值决定变量的类型
3. 字符串方法
format:{ } 替换输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25# 字符串模板
template = 'Hello {}'
# 模板数据内容
world = 'World'
result = template.format(world)
print(result) # ==> Hello World
# 指定顺序
template = 'Hello {0}, Hello {1}, Hello {2}, Hello {3}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.
# 调整顺序
template = 'Hello {3}, Hello {2}, Hello {1}, Hello {0}.'
result = template.format('World', 'China', 'Beijing', 'imooc')
print(result) # ==> Hello imooc, Hello Beijing, Hello China, Hello World.
# 指定{}的名字w,c,b,i
template = 'Hello {w}, Hello {c}, Hello {b}, Hello {i}.'
world = 'World'
china = 'China'
beijing = 'Beijing'
imooc = 'imooc'
# 指定名字对应的模板数据内容
result = template.format(w = world, c = china, b = beijing, i = imooc)
print(result) # ==> Hello World, Hello China, Hello Beijing, Hello imooc.分割
- 索引取值,类似java的字符串数组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20s = 'ABC'
a = s[0] # 第一个
b = s[1] # 第二个
c = s[2] # 第三个
print(a) # ==> A
print(b) # ==> B
print(c) # ==> C
# 取子串,不包括endIndex
a = s[startIndex:endIndex]
[1:]--获取从位置1开始后面的字符(默认首位是0)
[:-1]--删除位置为-1的字符(也就是获取从位置0带位置-1之间的字符)
[-1:]--获取位置-1的字符
[::-1]--从最后一个元素到第一个元素复制一遍。(也就是倒序)
[:]--相当于完整复制一份str[1:]、[:-1]和[::-1]详解 :参考
1
2
3
4
5
6
7
8
9
10索引从前往后为0、1、2...,从后往前 -1、-2、...
[1:]--获取从位置1开始后面的字符(默认首位是0)
[:-1]--删除位置为-1的字符
[-1:]--获取位置-1的字符
[::-1]--倒序(从最后一个元素到第一个元素复制一遍)
[:]--完整复制一份str
4. 条件
if
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19if 条件:
逻辑
else:
逻辑
# 注意逻辑代码是要缩进的,4个空格
score = 59
if score < 60:
print('抱歉,考试不及格')
else:
if score >= 90:
print('恭喜你,拿到卓越的成绩')
else:
# elif = else if
if score < 60:
print('抱歉,考试不及格')
elif score >= 90:
print('恭喜你,拿到卓越的成绩')
5. 循环
for
1
2
3
4
5
6
7
8
9
10
11for i in arr:
逻辑
# 嵌套循环
s1 = 'ABC'
s2 = '123'
s3 = 'xyz'
for i in s1:
for j in s2:
for k in s3:
print(i + j + k)while
1
2while True:
逻辑break:提前终止循环
continue:提前继续循环
6. 容器
6.1 list:列表
- 有序
- 任意类型
1 | sources = [12,23,34] |
6.2 tuple:元组
- 有序
- 基础数据类型(数字、布尔、字符)固定不变,不可添加(性能>>list)
- 组合类型可变,原因为指向同一个地址
- 可与list相互转换
1 | t = ('Alice','Bob','Candy') |
- 方法
- count:统计元素次数
- index:返回指定元素的下标(注:元素不存在会报错)
- count:统计元素次数
6.3 dict:字典
- 键值对映射
- 查找速度快 > list
- 占用内存大 < list
- 无序(3.5版本)、有序(3.6、3.7)
- key不可变(tuple可以作key,list不行)
1 | d = dict() # ==> {} 空 |
- 方法
- keys:返回所有key,list类型
- values:返回所有value,list类型
- items:返回所有值,包含key和value
- clear:清除所有元素
6.4 set
- 元素不重复
- 区分大小写
- 不是有序的
1 | # 创建 |
- 方法
- add:添加
- remove:删除(元素不存在报错)
- discard:删除(元素不存在不会报错)
- clear:清除所有元素
- issubset:是否子集
- issuperset:是否超集
- isdisjoint:是否重合,有重合False、无重合True
7.函数
- 引入后,直接调用即可
1 | # 定义 |
- 方法
- isinstance:判断参数类型
二、面向对象
1. 类的定义
1 | # 定义:三种方式 |
2.类的继承
1 | # 定义继承:(要继承的类) |
3.类的特殊方法
- 双下划线开头
- 双下划线结束
1 | # __str__:转化为字符串 |
4.模块和包
1 | # main.py 自身的模块 |
5.输入输出
1 | # input:程序输入,输入的为字符串 |
文件打开方式
mode 说明 注意 r 只读 文件必须存在 w 只写 文件不存在则创建,存在则清空 a 追加 文件不存在则创建 r+/w+ 读写 a+ 追加和读写 rb/wb/ab/rb+/wb+/ab+ 二进制
6.网络编程
服务端:新增Socket、绑定ip和端口、监听连接、接受连接
客户端:新增Socket、连接服务端
1 | # Socket |
7.函数式编程
编程范式
允许有变量,支持高阶函数(函数可作为变量),支持闭包(可返回函数),支持匿名函数
1 | # 1.把函数作为参数 |