数据类型分类
按照存值个数:
存一个值:整型/浮点型/字符串
存多个值:列表/字典/元组/集合
按照有序和无序:
有序:字符串/列表/元组
无序:字典/集合
按照可变和不可变
可变:字典/列表/集合
不可变:整型/浮点型/字符串/元组
Python深浅拷贝
# 拷贝 赋值
# lt = [1,2,3]
# lt2 = lt
# lt.append(4)
# print(lt)
# print(lt2)
# 列表为可变类型,所以lt的值变化,lt2的值也会跟着变化
# 浅拷贝
# import...
lt = [1000,2000,3000,[4000,5000,6000]]
print('id(lt)',id(lt))
print(f"id(lt[0]):{id(lt[0])}")
print('id(lt[1])',id(lt[1]))
print('id(lt[2])',id(lt[2]))
print('id(lt[3])',id(lt[3]))
print('*'*50)
# 深拷贝
lt2 = copy.deepcopy(lt) #lt2 = list(lt2)
print('id(lt2)',id(lt2))
print('id(lt2[0])',id(lt2[0]))
print('id(lt2[1])',id(lt2[1]))
print('id(lt2[2])',id(lt2[2]))
print('id(lt2[3])',id(lt2[3]))
print('*'*50)
拷贝/浅拷贝/深拷贝 只针对可变数据类型
# 拷贝
# 拷贝: 当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2变化
#浅拷贝:当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2不变化
# copy.copy() 可变数据的类型中的内置方法.copy()
# 深拷贝: 当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变
# copy.deepcopy()
# 拷贝 赋值
# lt = [1,2,3]
# lt2 = lt
# lt.append(4)
# print(lt)
# print(lt2)
# 列表为可变类型,所以lt的值变化,lt2的值也会跟着变化
# 浅拷贝
# import...
lt = [1000,2000,3000,[4000,5000,6000]]
print('id(lt)',id(lt))
print(f"id(lt[0]):{id(lt[0])}")
print('id(lt[1])',id(lt[1]))
print('id(lt[2])',id(lt[2]))
print('id(lt[3])',id(lt[3]))
print('*'*50)
# 深拷贝
lt2 = copy.deepcopy(lt) #lt2 = list(lt2)
print('id(lt2)',id(lt2))
print('id(lt2[0])',id(lt2[0]))
print('id(lt2[1])',id(lt2[1]))
print('id(lt2[2])',id(lt2[2]))
print('id(lt2[3])',id(lt2[3]))
print('*'*50)
拷贝/浅拷贝/深拷贝 只针对可变数据类型
# 拷贝
# 拷贝: 当lt2为lt的拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2变化
#浅拷贝:当lt2为lt的浅拷贝对象时,lt内的可变类型变化,lt2变化;lt内的不可变类型变化,lt2不变化
# copy.copy() 可变数据的类型中的内置方法.copy()
# 深拷贝: 当lt2为lt的深拷贝对象时,lt内的可变类型变化,lt2不变化;lt内的不可变类型变化,lt2不变
# copy.deepcopy()
异常处理
# 异常:报错
# 语法异常:错误都为SynatxError
# 检测方法
# try:
# if
# except Exception as e : #无法捕捉语法错误
# print(e)
# 逻辑异常:错误类型多种多样
# try:
# 代码块
# except: #除此之外
# pass
# except ZeroDivisionError as e: # 除此之外 # try里面的代码出了什么错误,就得用什么错误捕捉 # as是把错误赋值给e
# print('e:', e)
# except KeyError as e: # 可以写多个except捕捉多个异常
# print('e:', e)
#except Exception as e: 可以捕捉任意异常
# print('e:',e)
# 了解部分
# print()
# try:
# except Exception as e :
# print('e:',e)
# # finally: 无论报不报错都会打印
# print()
# assert 断言,最早的时候没有pycharm,那这个做调试,一辈子都用不上了
# a = 1
#
# a += 1
#
# assert a == 3 # 条件成立会跳过,条件错误会报AssertionError错误
#
# print(3)
# raise 主动抛错,没有用. 创建框架/创建语言 C/C++ 有用
# print(1)
# raise ZeroDivisionError('傻逼吧,主动抛错干嘛')
# print(2)
# 1/0
# 异常:报错
# 语法异常:错误都为SynatxError
# 检测方法
# try:
# if
# except Exception as e : #无法捕捉语法错误
# print(e)
# 逻辑异常:错误类型多种多样
# try:
# 代码块
# except: #除此之外
# pass
# except ZeroDivisionError as e: # 除此之外 # try里面的代码出了什么错误,就得用什么错误捕捉 # as是把错误赋值给e
# print('e:', e)
# except KeyError as e: # 可以写多个except捕捉多个异常
# print('e:', e)
#except Exception as e: 可以捕捉任意异常
# print('e:',e)
# 了解部分
# print()
# try:
# except Exception as e :
# print('e:',e)
# # finally: 无论报不报错都会打印
# print()
# assert 断言,最早的时候没有pycharm,那这个做调试,一辈子都用不上了
# a = 1
#
# a += 1
#
# assert a == 3 # 条件成立会跳过,条件错误会报AssertionError错误
#
# print(3)
# raise 主动抛错,没有用. 创建框架/创建语言 C/C++ 有用
# print(1)
# raise ZeroDivisionError('傻逼吧,主动抛错干嘛')
# print(2)
# 1/0
基本的文件处理
# 基本的文件处理
# 文件:操作系统提供的虚拟单位
# 作用:读取数据
# 1.找到文件路径
# path = r''
# 2.双击打开
# f = open(path,'w')
# print(f) 文件数据类型
# r-->只读,w-->只写,清空当前文件后写入
# 3.看文件
# data = f.read()
# print(data)
# 4.写文件
# f.write('nick handsome')
# 5.del f 只删除了对文件的引用,没有删除对操作系统的占用
# 基本的文件处理
# 文件:操作系统提供的虚拟单位
# 作用:读取数据
# 1.找到文件路径
# path = r''
# 2.双击打开
# f = open(path,'w')
# print(f) 文件数据类型
# r-->只读,w-->只写,清空当前文件后写入
# 3.看文件
# data = f.read()
# print(data)
# 4.写文件
# f.write('nick handsome')
# 5.del f 只删除了对文件的引用,没有删除对操作系统的占用
绝对路径和相对路径
绝对路径:从根目录开始描述文件路径
相对路径:在当前文件夹下,可以直接写文件名
绝对路径:从根目录开始描述文件路径
相对路径:在当前文件夹下,可以直接写文件名
TODO
定义一个TODO,定义方式为#TODO,可在pycharm左下角快速转到定义#TODO的地方
if True:
# TODO:
pass
if True:
# TODO:
pass