数据类型分类

按照存值个数:

存一个值:整型/浮点型/字符串

存多个值:列表/字典/元组/集合

按照有序和无序:

有序:字符串/列表/元组

无序:字典/集合

按照可变和不可变

可变:字典/列表/集合

不可变:整型/浮点型/字符串/元组

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