学习python(六)

学习 http://www.cnblogs.com/vamei/archive/2012/07/10/2582795.html

1.异常

try:
     ...
except error1:
     ...
except error2:
     ...
else:
     ...
finally:
     ...
===
raise StoIteration()

re = iter(range(5))
>>> try :
...     for i in range(100):
...             print re.next()
... except StopIteration:
...     print 'here is end', i

2.即使是多个变量指向同一个对象,如果一个变量值发生变化,那么实际上是让这个变量指向一个新的变量,并不影响其他的变量的指向

>>> a = 5
>>> b = a
>>> a = a + 2
>>> print a,b
7 5
>>> L1 = [1,2,3]
>>> L2 = L1
>>> L1 = 1
>>> print L1
1
>>> print L2
[1, 2, 3]
Note: 在该情况下,我们不再对L1这一变量赋值,而是对L1所指向的表的元素赋值。结果是,L2也同时发生变化。

>>> L1 = [1,2,3]
>>> L2 = L1
>>> L1[0] = 2
>>> print L2
[2, 2, 3]

原因何在呢?因为L1,L2的指向没有发生变化,依然指向那个表。表实际上是包含了多个变量的对象(每个变量是一个元素,比如L1[0],L1[1]..., 每个变量指向一个对象,比如1,2,3), 。而L1[0] = 10这一赋值操作,并不是改变L1的指向,而是对L1[0], 也就是表对象的一部份(一个元素),进行操作,所以所有指向该对象的变量都受到影响。

(与之形成对比的是,我们之前的赋值操作都没有对对象自身发生作用,只是改变变量指向。)

3.像表这样,可以通过引用元素,改变内存中的对象自身(in-place change)的对象类型,称为可变数据对象(mutable object),词典也是这样的数据类型。

而像之前的数字和字符串,不能改变对象本身,只能改变变量的指向,称为不可变数据对象(immutable object)。我们之前学的定值表(tuple),尽管可以引用引用元素,但不可以通过赋值改变元素,也因此不能对对象本身进行改变,也是immutable object.

4.在调用函数f()时,实际上函数让参数作为一个变量,指向a所指的对象。如果参数是不可变(immutable)的对象,那么如上面所讲,各个变量之间相当于相互独立。参数传递类似于C语言中的值传递。

 如果是参数是可变(mutable)的对象,那么存在有改变对象自身的可能性,所有指向该对象的变量(无论是函数中的参数,还是主程序中的变量)都会受影响,编程的时候要对此问题留心。

>>> def f(x):
...     x = 100
...     print x
...
>>> a = 1
>>> f(a)
100
>>> print a
1
>>> def f(x):
...     x[0] = 100
...     print x
...
>>> a = [1,2,3]
>>> f(a)
[100, 2, 3]
>>> a
[100, 2, 3]

变量和对象的分离,对象是内存中储存数据的实体,变量指向对象。

5.标准库概览

1) 文字处理 re包,string包,textwrap包

2) 数据对象 copy包,数组array,队列Queue,表(list), 字典(dictionary)

3) 日期和时间 time包,datetime包

4) 数学运算 decimal包, fraction包,random包,math包,(numpy非标准包)

5) 存储 pickle包 (objectread write),sqlite3包,XML和csv格式的文件也有相应的处理包

6) Python运行控制 sys包被用于管理Python自身的运行环境

7) 操作系统 os包是Python与操作系统的接口,glob包、shutil包、os.path包

8) 线程与进程 threading包,multiprocessing包

9) 基于socket层的网络应用 socket包,asyncore包

10) 互联网应用 BaseHTTPServer包; urllib包, urllib2包,urlparse包


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值