python基础-1
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('解码格式')
json可以将各种数据类型转换为str ,str可以通过encode装换成byte ,在网络中传输
5.python基础命令
hostname = input('主机名:') #交互定义变量 print(type(hostname)) #type()打印变量数据类型 hostname = '{}-{}'.format('master',1) #format()用于格式化 ,用于拼接
6.python的运算符
算数运算: + - * / % ** // #加减乘除取余次方取整
赋值运算: += -= *= /= %= **= //= # a += b => a = a + b
比较运算: == != >= <= < >
成员运算:
a = 'name' b = [1,2,'name'] c = {'name': 'lucy', 'age': 3} if a in b and a in c: # 判断变量是否为成员 ,判断变量是否为字典key值 print('ok')
逻辑运算: 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) #判断变量是否为对应数据类型 ,返回bool值
str字符串(不可变数据类型,可哈希,可迭代,对字符串的操作都需要返回新的字符串改变)
str.join('list') #将list中元素 ,使用str1全部拼接起来 ,list的数据必须是str类型 str.upper() #将字符串字母全部大写 str.lower() #将字符串字母全部小写 str.split() #从左以空格为分隔符切割成为列表 str.rsplit('&' ,N) #从右以'&'为分隔符切割成为列表 ,切N次 str.replace('old','new' ,N) #替换字符串内容 ,从左开始替换N个 str.strip('k8s') #去除字符串前后两端的 :k 8 s 三个字符任意组合,遇到出三个字符外一端停止 (a = 'k8s&dockser&paa8s';print(a.strip('k8s'))) str.endswith('字符串') .startswith('字符串') #判断字符串是否以一个字符串开头 或 结尾 (a = 'k8s&dockser&paa8s';print(a.endswith('8s'))) str.count('PK') #查看字符串'PK'字符串的数量 str[起始索引:终止索引:步长]
list列表(有索引,有序,可变,可嵌套,可迭代)
#增 list.append(值) #末尾追加元素 list.insert(索引:值) #指定索引增加元素 list.extend(可迭代对象) #常用于列表的拼接 ,是要是可迭代对象都可以把最小元素 ,插入列表
列表合并也一直直接 + 号不过会生成新的列表对象
#删 list.pop(索引) #删除列表指定索引数据 del list[0:2] #切片删除 #改 list[索引] = 值 #按索引改变值 #查 list.sort(reverse=True) #列表存int可以使用sort排序 ,reverse翻转排序
tuple元祖(不可变,可迭代,如果仅一个元素要加逗号)
#拼接元组
a = (1, 2, 3,) b = ('b', '1', '10') c = a + b print(c)
dict字典(存储关系型数据很爽 ,key唯一仅为不可变数据类型str,int等 ,value可以是任意类型数据 ,默认迭代key值)
#增 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集合(存储不可变数据类型 , 无序不重复)
list1 = [1, 2, 3, 1, 21, 2, 1, 3, 4, 1, 2]
set1 = {1, 2, 3, 4}
set2 = {4, 5, 6, 7}
# set集合给list去重
s1 = set(list1)
# set两集合交集
set3 = set1 & set2
# 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))