pytho中的pass和del

本文介绍了Python编程语言中的两个重要概念:pass语句和del语句。pass语句作为占位符用于合法地保留代码结构,而del语句则用于删除变量名及其所引用的对象。文章通过实例详细解释了这两种语句的应用场景。

  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的解释器会负责内存的回收)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值