您的位置:首页 > 编程语言 > Python开发

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:

 

>>> 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 基础学习