(07)内存使用和变量赋值

==================================
修订时间:
17:36 2016-03-03 星期四
12:43 2015-2-5 星期四
==================================
文件头通用写法
#!/usr/bin/python
#conding:utf8
==================================

■ 浅拷贝:
  ● 标签 和 地址空间
     a=[1,3,4] 
     b=a
     a 和 b 是标签  后面的数据是地址空间    a 和b 指向同一个地址空间,随便改一个,都会跟着变
    
     系统拷贝方式
     b=a[:]
   
     import copy
     a=[1,3,4,['a','b']] 
     b=copy.copy(a)
    浅拷贝:只拷贝父对象,子对象不拷贝,若a改变第4个元素,b对应的第4个元素还会变
    可以用id()函数看内存地址

■ 深拷贝:
    b=copy.deepcopy(a)
    深拷贝:把对象和存储空间完全拷贝出来

■ 这对代码性能有一定的影响

* 变量赋值:
    #简化赋值,这样两边数目要一样
    >>> one,two,three,four="good"
    >>> one
    Out[257]: 'g'
    >>> two
    Out[258]: 'o'
    >>> three
    Out[259]: 'o'
    >>> four
    Out[260]: 'd'
   
    >>> name,age="toby",22
    >>> name
    Out[262]: 'toby'
    >>> age
    Out[263]: 22
   
    #两变理交换数值
    >>> name="john"
    >>> age=22
    >>> name,age=age,name
    >>> name
    Out[46]: 22
    >>> age
    Out[47]: 'john'
    比其它高级语言强
   
    #序列赋值左右数目一定要相等
     >>> a,b=33,11,22
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3066, in run_code
        exec(code_obj, self.user_global_ns, self.user_ns)
      File "<ipython-input-48-af8ae72f8be9>", line 1, in <module>
        a,b=33,11,22
    ValueError: too many values to unpack
    左2,右3,当然报错了
   
    # 条件赋值
    >>> name="John" if 3>2 else "Mary"
    >>> name
    Out[20]: 'John'
    >>> name="John" if 3<2 else "Mary"
    >>> name
    Out[22]: 'Mary
    if 条件为真,保底前面赋值,否则用后面值换了

posted @ 2016-02-18 10:33  toby2chen  阅读(380)  评论(0编辑  收藏  举报