当前位置:编程学习 > 网站相关 >>

最后几个控制用的

1.pass
什么都没有发生,直接过去。这个神马都不做的东西,是一个占位符的作用。有的时候,程序需要一个if语句,然后进行测试,但是缺少一个语句块的代码,所以,先空着。
if name=='hello':
    print 'welcome'
elif name='what':
    #还没有完
    pass
elif name='hi'
    print 'you are welcome'


2.del
删除。
>>>x=1
>>>x
1
>>>del x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined


3.exec
执行字符串。这里有一个叫做黑暗魔法的东西,使用这个exec好像不是一件好事。看看代码。
>>> exec "print 'hello world'"
hello world
反正用这个exec挺危险的,所以,经常给它提供命名空间。所谓命名空间,c++里面也有,不懂是神马意思。暂时可以理解为,放置变量的地方。
>>> from math import sqrt
>>> exec 'sqrt=1'
>>> sqrt(4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
后面的那个调用的函数就不可以使用了,因为被第一个给覆盖了。所以,要用命名空间来解决这个问题。exec的好处是可以动态地创建代码字符串,如果字符串从其他地方获得,不知道含有神马,就麻烦了,很可能像上面一样。
使用命名空间的:
>>> from math import sqrt
>>> scope={}
>>> exec 'sqrt=1' in scope
>>> sqrt(4)
2.0
这样就解决了问题。

4.eval
呵呵,这个看起来很陌生,实际很熟悉。在区别raw_input 和input的时候,就看见过这个,eval(raw_input())就等于input().
>>> eval(raw_input('enter :'))
enter :3+4
7


摘自 juepei的专栏
补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,