8.6(数据类型分类,python深浅拷贝,异常处理,基本的文件操作,绝对路径和相对路径)

数据类型分类

按照存值个数:

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

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

按照有序和无序:

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

无序:字典/集合

按照可变和不可变

可变:字典/列表/集合

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

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()

异常处理

# 异常:报错
# 语法异常:错误都为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    只删除了对文件的引用,没有删除对操作系统的占用

绝对路径和相对路径

绝对路径:从根目录开始描述文件路径
相对路径:在当前文件夹下,可以直接写文件名

TODO

定义一个TODO,定义方式为#TODO,可在pycharm左下角快速转到定义#TODO的地方

if True:
    # TODO:
    pass

原文地址:https://www.cnblogs.com/jiann/p/11311312.html

时间: 2024-10-14 00:54:36

8.6(数据类型分类,python深浅拷贝,异常处理,基本的文件操作,绝对路径和相对路径)的相关文章

python深浅拷贝,集合以及数据类型的补充

1.基础数据类型的补充 1.元组 如果元组中只有一个数据,且没有逗号,则该'元组'与里面的数据的类型相同.如: 1 tu = (1) 2 tu1 = (1,) 3 tu2 = ('alex') 4 tu3 = ([1,2,3],) 5 print(tu,type(tu)) # 1 <class 'int'> 6 print(tu1,type(tu1)) # (1,) <class 'tuple'> 7 print(tu2,type(tu2)) # alex <class 's

python 深浅拷贝 进阶

主要理解新与旧到底在哪里 这样也就理解了 深浅拷贝 先说说赋值,其实python中的赋值其实是赋值了一个引用,例如: foo1=1.0 foo2=foo1 用操作符is判断时,你可以发现结果是true,是因为python是先创建了一个对象1.0,然后这个对象的引用又被赋值给了foo1和foo2,但是如果是这样: foo1=1.0 foo2=1.0 这时你会发现,这其实是创建了两个不同的对象,用内建函数id()可以发现,二者的身份不同: 其实python还有一个特例,例如: a=1 b=1 你会发

Python开发【第二章】:Python深浅拷贝剖析

Python深浅拷贝剖析 Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果. 下面本文就通过简单的例子介绍一下这些概念之间的差别. 一.对象赋值 创建列表变量Alex,变量包含子列表,通过变量Alex给变量lzl赋值,对

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #

python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝

1. 基础数据类型补充 li = ["李嘉诚", "麻花藤", "?海峰", "刘嘉玲"] s = "_".join(li) print(s) li = "?花?闺?" s = "_".join(li) print(s) 列表: 循环删除列表中的每?个元素 li = [11, 22, 33, 44] for e in li: li.remove(e) print(li

Python深浅拷贝

深浅拷贝 深浅拷贝分为两部分,一部分是数字和字符串另一部分是列表.元组.字典等其他数据类型. 数字和字符串 对于数字和字符串而言,赋值.浅拷贝和深拷贝无意义,因为他们的值永远都会指向同一个内存地址. # 导入copy模块>>> import copy# 定义一个变量var1>>> var1 = 123# 输出var1的内存地址>>> id(var1)1347747440>>> var2 = var1# var2的内存地址和var1相同

Python 深浅拷贝 (Shallow copy and Deep copy in Python)

前言 昨天刷公众号看到一篇描述py优雅语法的文章,心痒之下到家就开始尝试,学习了for else statement,yield和py版三目写法.在列表切片这部分中,对作者的列表拷贝写法,有些不太理解. # 拷贝 copy_items = items[::] 或者 items[:] 尝试 首先开一个python,随便建一个列表l=[1,2,3]将其进行两种方法的拷贝: 我的写法 c=l 作者的写法 d=l[:] 分别打印了c和d,并没有什么差别,仔细斟酌了一下作者的用意,觉得应该有一些深层次的考

python深浅拷贝的理解和区分

1 import copy 2 3 a1 = ['s1','s2','s3'] 4 5 #可变数据类型 6 a = [1,2,a1] 7 8 b = a 9 a1.append('s4') 10 #浅拷贝 11 c = copy.copy(a) 12 #深拷贝 13 d = copy.deepcopy(a) 14 15 #可变数据类型打印 16 print('值打印----:') 17 print(a1) 18 print(a) 19 print(b) 20 print(c) 21 print(

python深浅拷贝以及数据在内存中储存方法

要搞懂深浅拷贝,首先要明白数据在内存里的储存方法. 一个变量的储存,首先是变量名加上储存内容的ID,通过ID去找到变量名所对应的内容, 当我们对数据进行赋值时,其实是把内容的整体地址赋给别的变量名(相当于复制一层ID) 然而当使用浅copy时,相当于把整体内容的地址与内容中第一层地址给复制(相当于复制两层ID) 应用:直接在变量名后加一个.copy(),或import调用copy模块使用模块中的方法copy.copy() 深度拷贝,其实是复制的整体以及整体内的所有ID(复制所有层ID) 方法是用