最后几个控制用的
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 ,