`
karrykai
  • 浏览: 9391 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Python学习笔记(2)

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

 

Copyright playgoogle.com© 2008

继续阅读《Python学习笔记(2)》的全文内容...

相关文章:

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics