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))
原文:https://www.cnblogs.com/quguanwen/p/11158000.html