Django Web开发指南
2015-7-14 20:43:44
P14:'raw'指示符告诉解释器不要转换字符串中的任何特殊字符。。。例如: filename = r'C:\temp\newfolder\robots.txt'。为了保持一致性,不管一个正则表达式是否用到了反斜杠,通常一律都使用raw字符串。
P18:dict.get('key'[,'不存在这个key'])方法比直接使用dict['key']更安全,因为get方法总会返回一个值(默认值为None)。也可以使用setdefault('key','value')方法,它的作用和get一样,而且如果键不存在的话,会使用默认值自动创建键值对,这样后面再调用这个键的话就不会产生错误了。
P23:常见的python异常:
AssertionError assert(断言)语句失败
ArrtibuteError 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
IOError 输入/输出异常,基本上是无法打开文件
ImportError 无法引入模块或者包;基本上是路径问题
IndentationError 语法错误;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C键被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能变异
TypeError 传入对象类型与要求的不符
UnboundLocalError 试图访问一个未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的
P24:httplib模块已经不存在。。。
2015-7-15 21:02:00
P39:复制对象和可改变性:不可变对象是传值的,可变对象是传引用的。不可变对象被真正复制,可变对象只是复制了一个对它们的引用,即在内存中只有一份对象,而有两份引用。
>>>mylist = [1, 'a', ['foo', 'bar']]
>>>mylist2 = list(mylist) #或者 mylist2 = mylist[:]
>>>mylist2[0] = 2
>>>mylist2[2][0] = 'biz'
>>>print mylist
[1, 'a', ['biz', 'bar']]
>>print mylist2
[2, 'a', ['biz', 'bar']]
对嵌套列表mylist的修改影响到了mylist2。因为mylist的第三个对象['foo', 'bar']是一个列表,而列表是可变的,所以mylist2得到的只是一份它的引用。
这种类型的复制称之为“浅拷贝(shallow copying)”,因为它只复制了对可变对象的引用而没有尝试获取对象的值。如果确实需要后面的这种行为,即“深拷贝(deep copying)”,必须导入copy模块中的copy.deepcopy。这种类型的拷贝通常是递归的,而且不是所有的对象都是可以深拷贝的。