- Python中没有 switch case语句,只有if elif else
- 字符串、数字、元组是不可变的,改变其值会创建新的对象(这也是为什么大量字符串的拼接会导致效率降低的原因)
- 字符串模版(直觉是这个功能做WEB的时候很有用,可以轻易的实现根据模版生成静态页面的功能):
from string import Template
s = Template("There are ${test}")
print s.substitute(test="python") ==>输出 There are python
substitute中参数如果没有对应声明字符串模版中的
Template 对象还有另外一个方法save_substitute(),该方法在没有声明key的情况下不会报错,直接输出 - 浅拷贝与深拷贝。
在拷贝一个列表时,有两种拷贝方式。浅拷贝,就是新创建了一个类型跟原类型一样,其内容是原来对象的引用,也就是说这个拷贝本身是新的,但是它的内容不是。而深拷贝则是建了一个与原对象独立的,但值一模一样的新对象。
如何实现浅拷贝?
通常有三种方式,(1)完全的切片操作[:](2)利用工厂函数,比如list(),dict()等。(3)使用copy模块的copy函数。
a 前拷贝的示例:
person = ["name",['male',19]]例认为打印出girl 和boy结果是什么?
girl = person[:] # 将人这个列表浅拷贝到girl
boy = person[:] # 将人这个列表浅拷贝到boy
gilr[0] = "lily" #修改名字
gril[1][0] = "female"
boy[0] = “john”
boy[1][0]="male"
boy[1][1]=22
boy ====> ["johu",['male',22]]
girl ====> ["lily",['male',22]]
为什么名字相互之间没有影响,而性别和年龄之间有影响呢?这是因为该列表中的第一个元素是一个字符串,是一个不可变的对象,一旦对其修改,就会独立生成一个新的对象。因此当拷贝的时候,字符串被显示的拷贝了,而列表只是拷贝了一个引用。
那么,如何实现深拷贝?
在copy模块,有一个deepcopy()方法,可以轻松实现深拷贝。
Copyright playgoogle.com© 2008
相关文章:
Python学习笔记(1) (2009-8-28 16:56:30)