Python学习笔记[2]
2014-01-10 12:18
183 查看
【备注:本文是学习http://blog.csdn.net/ithomer/article/details/8907268过程中记下的笔记】
【EX:所注为代码示例】
【Tips:所注为标识,可能是一个小技巧】
一、进阶08 异常处理
类似于C++中的异常处理一样
具体过程如下:
try -> func() ->except somecase: -> except -> else -> finally
在可能会出现异常的函数体外用try块包裹,在函数执行过程中如果遇到异常,函数停止,与下面except 后面所带的异常类型进行匹配,如果匹配,则执行该except后面的语句(如果except后面没有参数,表示所有的一场都交给他处理,应该算是默认项)
如果异常与这些except 后面的参数都没匹配上,且没有无参的except,那么就往上一层,返回调用该函数的部分直到被捕捉或造成主程序报错;
如果没有异常就执行else部分,最后的finally是程序无论是否异常都会执行的
总结一下他的过程就是:
try -> 异常 -> except -> finally
try -> 无异常 -> else -> finally
EX:
上面程序,出现的异常是:除数为零,但是没有合适异常参数与其匹配,那么就交给默认项except处理,完了后执行finally语句
用raise自己抛出异常,类似于throw
EX:
EX:
二、进阶09 动态类型
1.前面的学习中我们了解到python中不用提前定义对象 而是直接进行赋值 EX: a = 9 吧= ‘abcd’
其实,每一个类型都是一个对象,上面的9,‘abcd’是两个对象,具有不同的类型
然后将这两个对象赋值给他们的引用,叫做对象的引用,但不同于C++中的引用,python中的引用不是与对象绑定的,你可以再将它引用至别的对象,所以,他的名字叫引用,但实质上是与指针一个作用
对象产生于你创建它的时候,销毁于无引用指向该对象时,对象占有一定的内存
EX:a = 3 #创建对象3,并用引用a指向他
a = 'xx' #创建对象‘xx’,同时改变a的指向,让它指向对象'xx',这时对象3被销毁
EX:
这个例子我们发现,虽然刚开始两个引用都指向同一个对象,但后来新产生了一个对象a**2,这时a指向新的对象,b的值没变
EX:
这样我们可以对比出一个结论:通过引用可以对所引用对象值进行修改的变量叫做可变对象,如字典,序列;不能修改的变量会死不可变对象,如数字,字符串等
2.值传递与引用传递
类似于C语言中的理解
值传递就是函数参数是一个副本,不改变原函数对象值,这种情况发生于参数是不可变类型
引用传递就是改变调用函数原对象值,发生于参数是可变类型
EX:
Tips:Python的逻辑运算符:and or not
【EX:所注为代码示例】
【Tips:所注为标识,可能是一个小技巧】
一、进阶08 异常处理
类似于C++中的异常处理一样
具体过程如下:
try -> func() ->except somecase: -> except -> else -> finally
在可能会出现异常的函数体外用try块包裹,在函数执行过程中如果遇到异常,函数停止,与下面except 后面所带的异常类型进行匹配,如果匹配,则执行该except后面的语句(如果except后面没有参数,表示所有的一场都交给他处理,应该算是默认项)
如果异常与这些except 后面的参数都没匹配上,且没有无参的except,那么就往上一层,返回调用该函数的部分直到被捕捉或造成主程序报错;
如果没有异常就执行else部分,最后的finally是程序无论是否异常都会执行的
总结一下他的过程就是:
try -> 异常 -> except -> finally
try -> 无异常 -> else -> finally
EX:
>>> def func(): try: m = 1/0 except TypeError: print"TypeError" except: print "Any Errorint Func()" else: print m finally: print"The End" >>> func() Any Errorint Func() The End
上面程序,出现的异常是:除数为零,但是没有合适异常参数与其匹配,那么就交给默认项except处理,完了后执行finally语句
用raise自己抛出异常,类似于throw
EX:
>>> def func(): try: print 'aaaa' raise StopIteration except StopIteration: print "StopIteration except" except: print "Any Except" else: print "succeed Run" finally: print 'The End' >>> func() aaaa StopIteration except The End
EX:
>>> def func(): try: print 'aaaa' raise except StopIteration: print "StopIteration except" except: print "Any Except" else: print "succeed Run" finally: print 'The End' >>> func() aaaa Any Except The End
二、进阶09 动态类型
1.前面的学习中我们了解到python中不用提前定义对象 而是直接进行赋值 EX: a = 9 吧= ‘abcd’
其实,每一个类型都是一个对象,上面的9,‘abcd’是两个对象,具有不同的类型
然后将这两个对象赋值给他们的引用,叫做对象的引用,但不同于C++中的引用,python中的引用不是与对象绑定的,你可以再将它引用至别的对象,所以,他的名字叫引用,但实质上是与指针一个作用
对象产生于你创建它的时候,销毁于无引用指向该对象时,对象占有一定的内存
EX:a = 3 #创建对象3,并用引用a指向他
a = 'xx' #创建对象‘xx’,同时改变a的指向,让它指向对象'xx',这时对象3被销毁
EX:
>>> b= 3 >>> a =b >>> a = a**2 >>> b 3 >>> a 9
这个例子我们发现,虽然刚开始两个引用都指向同一个对象,但后来新产生了一个对象a**2,这时a指向新的对象,b的值没变
EX:
>>> l1= [1,2,3,4] >>> l2 = l1 >>> l2[0] = 10 #这里对l2所引用的对象元素进行赋值,没有修改引用,而我们之前的操作都是对引用本身进行操作 >>> l2 [10, 2, 3, 4] >>> l1 [10, 2, 3, 4]
这样我们可以对比出一个结论:通过引用可以对所引用对象值进行修改的变量叫做可变对象,如字典,序列;不能修改的变量会死不可变对象,如数字,字符串等
2.值传递与引用传递
类似于C语言中的理解
值传递就是函数参数是一个副本,不改变原函数对象值,这种情况发生于参数是不可变类型
引用传递就是改变调用函数原对象值,发生于参数是可变类型
EX:
>>> def func(a,l): a = a*2 l[0] = l[0]+l[1] >>> l = [1,2,3,4] #l是可变类型 >>> a = 2 #a是不可变类型,调用func会产生另一个对象,对象值为2 >>> func(a,l) >>> a 2 #a没有改变 >>> l #l被改变 [3, 2, 3, 4]
Tips:Python的逻辑运算符:and or not
相关文章推荐
- Python学习笔记015——文件file的常规操作(二进制文件)
- 学习笔记☞ python 基础(python3)【一】(python相关介绍,核心数据类型(数字),赋值语句,算数运算符优先级)
- python 学习笔记——getattr hasattr setattr delattr
- python 学习笔记(4) python函数和模块
- python学习笔记2-列表与元组
- Python学习笔记-Day5
- python学习笔记
- python+webdriver学习笔记
- python 学习笔记(4)解析和字符串处理
- Python学习笔记(六)——一些语句
- python学习笔记——信号模块signal
- python学习笔记——线程threading (二)重写run()方法和守护进程daemon()
- Python爬虫学习笔记(一)
- Python 学习笔记 - 操作MySQL
- python学习笔记——运算符
- Python学习笔记(二)
- 【Python】【学习笔记】1.快速入门
- python数据结构学习笔记-2016-10-05-04-抽象数据类型(四)
- Python学习笔记
- 【学习笔记】WEEK2_Python and Vectorization_Vectorization