1. 语言分类基础
解释型 (兼容性较好速度偏慢 -- 接口, 脚本)
编译型 (编译后的机器码执行速度快 -- 数据库, 系统)
静态语言: 变量定义需要声明类型 (C ,C++ ,JAVA)
动态语言: 变量第一次定义内部记录类型 (python ,Ruby)
强类型定义语言: 严谨, 不经过强制转换 , 变量不会变换数据类型
弱类型定义语言: 方便易出错, 如 shell 的字符串可以当数字处理
2.python 的优缺
简单, 开发效率高, 可移植, 可扩展
速度慢, 不加密, 多线程无法利用多核优势 (GIL 锁. CPython 导致)
3.python 的注释
# 单行 """多行"""
4. 字符编码 , 二级制排列组合 , 转为可读字符 (JSON 序列化 --->encode 编码传输 decode 解码 --->JSON 反序列化)
ASCII 码 美国编码
GB2312 中国编码
GBK 中国编码
Unicode 万国编码 存储时消耗空间 py3 内存中全部是 unicode 编码, 需要转码传输 (文件中读取, 在内存会被转为 unicode)
UTF-8 可变长万国码 en:1bit cn:3bit 用于传输存储
变量. encode('编码格式') 变量. decode('解码格式')
5.python 基础命令
- print()
- hostname = input('主机名:') #交互定义变量
- print(type(hostname)) #打印变量数据类型
- hostname = '{}-{}'.format('master',1) #用于格式化 , 用于拼接
6.python 的运算符
算数运算: + - */ % **// #加减乘除取余次方取整
赋值运算: += -= *= /= %= **= //= # a += b => a = a + b
比较运算: == != >= <= <>
成员运算:
- a = 10; b = 'quguanwen'; c = (1, 2,); d = [a, b, c]; print('quguanwen' in d) #判断'quguanwen'是否是列表成员
- a = 'name';b = {
- 'name': 'quguanwen', 'age': 3
- };print(a in b) #判断'name'是否是字典的 key , 仅用字典的 key
逻辑运算: and or not #与或非 , 优先级: ()> not> and> or
x or y 如果 x 为真返回 x , 否则返回 y 简单 (x 为真返回 x , 其他返回 y)
x and y 如果 x 为真返回 y , 否则返回 x 简单 (x 为真返回 y, 其他返回 x)
逻辑运算两边混合 (混合就简单该显示数字显示数字, 该显示 bool 显示 bool , 最后进行逻辑运算)
print (not 2> 1 and 3 <4 or 4> 5 and 2> 1 and 9> 8 or 7 < 6 and 10 or 4 and 3 or 10 or 0 and 3 and 4 or 0)
7.python 循环体
- range(100, 0, -2) #反向取值 , 需要步长为负号 (顾头不顾腚)
- range(0, 100, 2) #正向取值 , 步长为正 (顾头不顾腚)
- continue , break #终端本次循环 , 退出当前循环体
8.python 的基础数据类型 (索引 0 起步)
- len(变量) #查看长度 ,int 除外
- id(变量) #查看对象内存地址唯一
- isinstance(变量 , 数据类型 1) #判断变量是否为数据类型 1 , 返回 bool 值
str 字符串 (不可变数据类型, 可哈希, 可迭代, 对字符串的操作都需要返回新的字符串改变)
- .upper() #将字符串字母全部大写
- .lower() #将字符串字母全部小写
- .split() #从左以空格为分隔符切割成为列表
- .rsplit('&' ,N) #从右以'&'为分隔符切割成为列表 , 切 N 次
- .replace('old','new' ,N) #替换字符串内容 , 从左开始替换 N 个
- .strip('k8s') #去除字符串前后两端的 :k 8 s 三个字符任意组合, 遇到出三个字符外一端停止 (a = 'k8s&dockser&paa8s';print(a.strip('k8s')))
- .endswith('字符串') .startswith('字符串') #判断字符串是否以一个字符串开头 或 结尾 (a = 'k8s&dockser&paa8s';print(a.endswith('8s')))
- .count('PK') #查看字符串'PK'字符串的数量
str[索引: 长度] #切片起始位置是索引 , 切固定长度
对字符串每个字符迭代操作
- a = 'YUIO'
- b = []
- for i in range(len(a)):
- b.append(a[i])
- print(b)
list 列表 (有索引, 有序, 可变, 可嵌套, 可迭代)
增
- .append(值) #末尾追加元素
- .insert(索引: 值) #指定索引增加元素
- .extend(可迭代对象) #常用于列表的拼接 , 是要是可迭代对象都可以把最小元素 , 介入列表
删
.pop(索引) #删除列表指定索引数据
del 列表 [0:2] #切片删除
改
列表 [索引] = 值 #按索引改变值
查
for 循环
.sort(reverse=True) #列表存 int 可以使用 sort 排序 ,reverse 翻转排序
tuple 元祖 (不可变, 可迭代, 如果近一个元素要加逗号)
拼接元组
a = (1, 2, 3,);b = ('b', '1', '10');a = a+b;print(a)
dict 字典 (存储关系型数据很爽 ,key 唯一仅为不可变数据类型 str,int 等 ,value 可以是任意类型数据)
增
- dict1['key'] = value #新增或覆盖
- dict1.setdefault('name' ,'quguanwen') #新增或不该变原值
删
- dict1.pop('key') #可删除指定 key , 并返回 value
- del dict1['key'] #删除指定 key
改
- dict1['key'] = value #新增或覆盖
- dict2.update(dic1) #dict2 字典内容根据 dic1 改变 , 该修改的修改, 该新增新增 , 但不会删除 dict2 字典内容
查
- dict1.get('key') #相较于 dict1['key'] 不会报错
- dict1.items() #将字典的所有 kv 以元祖的方式放入列表中 , 可以循环取值 , 解构分别赋值
- dict1.values() #将字典的所有值放入列表
- dict1.keys() #将字典的所有 key 放入列表
set 集合 (存储不可变数据类型 , 无序不重复)
set 去重
- o = [1, 2, 3, 1, 21, 2, 1, 3, 4, 1, 2]
- s1 = set(o)
set 交集
set3 = set1 & set2 #取交集
set 差集
set3 = set1 - set2 #取出 set1 多与 set2 的元素
9. 深浅拷贝
- import copy
- l1 = [1, 2, 3, [11, 22, 33]]
- l2 = l1.copy() # 浅拷贝 , 第一层拷贝一人一份 , 第二层还是共用
- l3 = l1 # 赋值 , 完全指向二者指向同一内存地址
- l4 = copy.deepcopy(l1) # 深拷贝 , 完全独立一份
- l1[0] = 0
- print(l1, id(l1))
- print(l2, id(l2))
- print(l3, id(l3))
- print(l4, id(l4))
来源: http://www.bubuko.com/infodetail-3118348.html