python-day9(正式学习)
深浅拷贝
先说一下可变和不可变数据类型,在原值的基础上修改,id不变值改变了的就是可变数据类型;而值改变了id也变了,即重新申请一个空间来放新值,这就是不可变数据类型。
拷贝
普通的拷贝就等于赋值,就是把一个变量值赋给另一个变量名
l1=[1,2,3,[4,5,6]]
l2=l1
l1.append(7)
print(l1)
print(l2)
[1, 2, 3, [4, 5, 6], 7]
[1, 2, 3, [4, 5, 6], 7]
浅拷贝
浅拷贝需要导入一个copy的模块,这种拷贝是新开了一个列表的内存,但列表里的元素指向的地址都还是一样的,如果列表里还有可变的数据类型的话,这个数据里的不可变类型修改的话,新列表也会修改。
import copy
l1=[1,2,3,[4,5,6]]
l2=copy.copy(l1)
l1.append(7)
print(l1)
print(l2)
l1[3].append(8)
print(l1)
print(l2)
[1, 2, 3, [4, 5, 6], 7]
[1, 2, 3, [4, 5, 6]]
[1, 2, 3, [4, 5, 6, 8], 7]
[1, 2, 3, [4, 5, 6, 8]]
深拷贝
和浅拷贝一样也需要导入一个copy模块,深拷贝的话是新列表存在一个单独的内存空间,其中元素指向的变量值地址也不相同,所以无论原列表怎么变,新列表都不会变。
import copy
l1=[1,2,3,[4,5,6]]
l2=copy.deepcopy(l1)
l1.append(7)
print(l1)
print(l2)
l1[3].append(8)
print(l1)
print(l2)
[1, 2, 3, [4, 5, 6], 7]
[1, 2, 3, [4, 5, 6]]
[1, 2, 3, [4, 5, 6, 8], 7]
[1, 2, 3, [4, 5, 6]]
异常处理
什么是异常
异常就是程序运行时发生错误的信号,然后抛出异常
语法错误
# 语法错误示范一
if
# 语法错误示范二
def test:
pass
# 语法错误示范三
class Foo
pass
# 语法错误示范四
print(haha
逻辑错误
# TypeError:int类型不可迭代
for i in 3:
pass
# ValueError
num=input(">>: ") #输入hello
int(num)
# NameError
aaa
# IndexError
l=['egon','aa']
l[3]
# KeyError
dic={'name':'egon'}
dic['age']
# AttributeError
class Foo:pass
Foo.x
# ZeroDivisionError:无法完成计算
res1=1/0
res2=1+'str'
异常的种类
常用的异常
- AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
- IOError 输入/输出异常;基本上是无法打开文件
- ImportError 无法引入模块或包;基本上是路径问题或名称错误
- IndentationError 语法错误(的子类) ;代码没有正确对齐
- IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
- KeyError 试图访问字典里不存在的键
- KeyboardInterrupt Ctrl+C被按下
- NameError 使用一个还未被赋予对象的变量
- SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
- TypeError 传入对象类型与要求的不符合
- UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
- ValueError 传入一个调用者不期望的值,即使值的类型是正确的
其他异常
- ArithmeticError
- AssertionError
- AttributeError
- BaseException
- BufferError
- BytesWarning
- DeprecationWarning
- EnvironmentError
- EOFError
- Exception
- FloatingPointError
- FutureWarning
- GeneratorExit
- ImportError
- ImportWarning
- IndentationError
- IndexError
- IOError
- KeyboardInterrupt
- KeyError
- LookupError
- MemoryError
- NameError
- NotImplementedError
- OSError
- OverflowError
- PendingDeprecationWarning
- ReferenceError
- RuntimeError
- RuntimeWarning
- StandardError
- StopIteration
- SyntaxError
- SyntaxWarning
- SystemError
- SystemExit
- TabError
- TypeError
- UnboundLocalError
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeError
- UnicodeTranslateError
- UnicodeWarning
- UserWarning
- ValueError
- Warning
- ZeroDivisionError
异常处理
提前预防
AGE = 10
while True:
age = input('>>: ').strip()
if age.isdigit(): # 只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
age = int(age)
if age == AGE:
print('you got it')
break
>>: nick
>>: sdkf
>>: 2
>>: 10
you got it
事后预防
如果错误无法预计则用到try..except
# 举例
try:
f = [
'a',
'a',
'a',
'a',
'a',
'a',
'a',
]
g = (line.strip() for line in f)
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
except StopIteration:
f.close()
a
a
a
a
a
用指定方法来处理异常
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
invalid literal for int() with base 10: 'hello'
万能异常方法
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e)
抛出异常(基本没用)
try:
raise TypeError('抛出异常,类型错误')
except Exception as e:
print(e)
断言(调试用,现在基本上没用)
try:
assert 1 == 2
except Exception as e:
print(e)
文件处理
这里只稍微扯一下,明后天会具体介绍。
用open来打开文件,这个方法里有3个参数,第一个是path路径,第二个是mode操作方式,第三个encoding是编码方式。
比如:
f=open('compare.py','w',encoding='utf-8')
f.write('s')
f.close()
这就是一个文件的写入操作,注意写入会覆盖文件之前的内容!!!
一碗不错的鸡汤http://hawstein.com/2019/04/24/life-cannot-dp-but-dont-be-always-greedy/
python-day9(正式学习)的更多相关文章
- Python 装饰器学习
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- c ...
- Requests:Python HTTP Module学习笔记(一)(转)
Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...
- 从Theano到Lasagne:基于Python的深度学习的框架和库
从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...
- Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习
http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...
- (转载)Python装饰器学习
转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...
- 正式学习React(五) react-redux源码分析
磨刀不误砍柴工,咱先把react-redux里的工具函数分析一下: 源码点这里 shallowEqual.js export default function shallowEqual(objA, ...
- 正式学习React(一) 开始学习之前必读
为什么要加这个必读!因为webpack本身是基于node环境的, 里面会涉及很多路径问题,我们可能对paths怎么写!webpack又是怎么找到这些paths的很迷惑. 本文是我已经写完正式学习Rea ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- Python装饰器学习
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 ? 1 2 3 4 5 6 7 8 # -*- ...
- Python的基础学习(第二周)
模块初始 sys模块 import sys sys.path #打印环境变量 sys.argv#打印该文件路径 #注意:该文件名字不能跟导入模块名字相同 os模块 import os cmd_res ...
随机推荐
- Xpath中text(),string(),data()的区别
摘要: 在XPath中,经常使用text()和string(),而我一般都是想到哪个用哪个,究竟他们之间有什么不同,没有在意过. 本质区别 text()是一个node test,而string()是一 ...
- wpscan
1版本信息检测 WPscan 使用语法 详细参数: --update #更新 -u / --url #要扫描的站点 -f / --force #不检查是否wordpress站点 -e / --enum ...
- 代码优化-多态代替IF条件判断
场景描述 在开发的场景中,常常会遇到打折的业务需求,每个用户对应的等级,他们的打折情况也是不一样的.例如普通会员打9折,青铜会员打8.5折,黄金会员打8折等等.在一般开发中最简单的就是判断用户的等级, ...
- win10无法连接windows服务器,无法连接SENS服务
本文链接:https://blog.csdn.net/weixin_38374974/article/details/80475566 膜拜大佬 首先,进入windows界面的时候,前期加载速度变得极 ...
- Activity的screenOrientation属性
activity在屏幕当中显示的方向.属性值可以是下表中列出的一个值: "unspecified" 默认值,由系统来选择方向.它的使用策略,以及由于选择时特定的上下文环境,可能会因 ...
- For 循环 kotlin(10)
For 循环 for 循环可以对任何提供迭代器(iterator) 的对象进行遍历,语法如下: for (item in collection) print(item) 循环体可以是一个代码块. fo ...
- 通过ID获取元素
网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人.那么在网页中,我们通过id先找到标签,然后进行操作. 语法: document ...
- anroid学习笔记(1)
大概是2个月前,报名了慕课的android就业班课程. 算是补全了当初博客分类的最初设计. 安卓和前端比较: 1,java在安卓开发中的作用,现在我的认识是和JavaScript在前端web开发中有很 ...
- slub分配object
kmem_cache如下: 62struct kmem_cache { struct kmem_cache_cpu __percpu *cpu_slab; /* Used for retriving ...
- nodejs本版问题
接到一个新项目,前端用的是VUE,这就需要安装nodejs.记得之前安装的是V6.X,在npm install加载依赖库node_modules的时候ant-design-vue总是报错.看到同事用n ...