pass
有的时候,程序什么事情都不用做。这种情况不多,但是一旦出现,就应该让pass语句出马了。
为什么使用一个什么都不做的语句呢?它可以在代码中做占位符使用。比如程序需要一个if语句,然后进行测试,但是缺少其中一个语句块的代码,考虑下面的情况:
name = raw_input('enter the name\n')
if name == 'lindaiyu':
print 'welcome'
elif name == 'xuebaochai':
pass#do nothing
elif name == 'jiabaoyu':
print "So you're here."
因为python中空代码是非法的。解决方法就是在语句中加上一个pass语句。
del
一般情况,python会删除那些不再使用的对象。因为使用者不会再通过任何变量或者数据结构引用它们
>>> album = {'song':'The price of love','singer':'zhangaijia','Composition':'lizongsheng'}
>>> songinfo = album
>>> album
{'singer': 'zhangaijia', 'Composition': 'lizongsheng', 'song': 'The price of love'}
>>> songinfo
{'singer': 'zhangaijia', 'Composition': 'lizongsheng', 'song': 'The price of love'}
>>> album = None
>>> songinfo
{'singer': 'zhangaijia', 'Composition': 'lizongsheng', 'song': 'The price of love'}
>>> songinfo = None
>>> songinfo
>>> album
首先,album和songinfo都绑定到同一个字典上。所以当设置album为None的时候,字典还可以通过songinfo使用。但是当把songinfo也设置为None的时候,字典就‘漂’在内存里面 ,没有任何名字绑定到它上面。没有办法获取和使用它。所以python解释器直接删除了那个字典。(这种行为被称为垃圾收集)。
注意:也可以使用None之外的其他值。字典同样会‘消失不见’。
另外一个方法就是使用del语句,(删除序列和字典的语句)它不仅会移除一个对象的引用,也会移除那个名字本身。
>>> x = 1 >>> del x >>> x
Traceback (most recent call last): File "<pyshell#96>", line 1, in <module> x NameError: name 'x' is not defined
看起来很简单,但有时理解起来有些难度。例如,下面的例子中,x和y都指向同一个列表:
>>> x = ['hello','world'] >>> y = x >>> y[1] = 'python' >>> x ['hello', 'python'] >>> y ['hello', 'python']
会有人认为删除了x之后,y也会随之消失了。但是并非如此,只是删除了x,y依然存在。 >>> del x >>> x
Traceback (most recent call last): File "<pyshell#106>", line 1, in <module> x NameError: name 'x' is not defined >>> y ['hello', 'python']
为什么会这样呢?x和y都指向同一个列表。但是删除x并不影响y.原因就是:删除的只是“名称”,而不是“列表本身(值)”。
事实上,在python中是没有办法删除值的。(也不需要过多考虑删除值的问题,因为在某个值不再使用的时候,python的解释器会负责内存的回收)。
本文介绍了Python编程语言中的两个重要概念:pass语句和del语句。pass语句作为占位符用于合法地保留代码结构,而del语句则用于删除变量名及其所引用的对象。文章通过实例详细解释了这两种语句的应用场景。
1万+

被折叠的 条评论
为什么被折叠?



