首页 > 其他 > 详细

赋值,表达式和打印

时间:2014-04-25 21:59:57      阅读:595      评论:0      收藏:0      [点我收藏+]

增强赋值以及共享引用

     这种行为通常就是我们所想要的,但注意,这隐含了“+=”对列表是做远处修改的意思。于是,完全不像“+”合并,总是生成新对象。就所有共享引用情况而言,只有其他变量名引用的对象被修改,其差别才可能体现出来:

1
2
3
4
5
6
7
8
9
10
>>> L=[1,2]
>>> M=L
>>> L=L+[3,4]
>>> L,M
([1, 2, 3, 4], [1, 2])
>>> L=[1,2]
>>> M=L
>>> L+=[3,4]
>>> L,M
([1, 2, 3, 4], [1, 2, 3, 4])

     这只对于列表和字典这类可变对象才重要,而且是相当罕见的情况。就像往常一样,如果你需要打破共享引用值的结构,就要对可变对象进行拷贝。

命名惯例

  • 以单一下划线开头的变量名(_X)不会被from module import *语句导入
  • 前后有下划线的变量名(_X_)是系统定义的变量名,对解释器有特殊意义
  • 以两个下划线开头,但结尾没有两个下划线的变量名(__X)是类的本地(“压缩”)变量
  • 通过交互模式运行时,只有单个下划线的变量名(_)会保存最后表达式的结果

类变量名通常以一个大写字母开头,而模块变量名以小写字母开头

表达式语句和在原处的修改

   表达式语句通常用于执行可于原处修改列表的列表方法

1
2
3
4
>>> L=[1,2]
>>> L.append(3)
>>> L
[1, 2, 3]

 然而初学者时常把这种运算写成赋值语句,试着把L赋值给更大的列表:

1
2
3
>>> L=L.append(4)
>>> print(L)
None

 然而,这样做是行不通的。对列表调用append,sort或reverse这类在原处的修改的运算,一定是对列表做原处的修改,但这些方法在修改后并不会把列表返回。事实上,他们返回的是None对象。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

赋值,表达式和打印,布布扣,bubuko.com

赋值,表达式和打印

原文:http://www.cnblogs.com/hubavyn/p/3687708.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!