作为占位符
#python不允许空代码块
if 1 > 0 :
#我们需要利用pass语句来占位
if 1 > 0 :
pass
赋值时,内存会开辟空间给这个值
当值改变时,原来的那个值就会在内存中消失(称为垃圾收集)
我们可以使用del语句,让一个对象删除消失
注意:python里是不能删除值的,我们删除的是这个对象,这个名称
动态创造python代码,然后将其作为表达式和语句执行
exec "x = 1"
x
#但是采用命令字符串可能会扰乱命名空间
from math import sqrt
exec "sqrt = 1"
sqrt(4)
#黑客有可能透过这样来破坏命名空间,影响某些关键函数的使用
#命名空间是一个放置变量的地方
#我们可以手动给予一个字典来存储这个变量
from math import sqrt
scope = {}
exec "sqrt = 1" in scope
sqrt(4) #这回命名空间就不会被干扰啦
len(scope)
scope
#呼……这个字典内容可真是多,这是因为内建的__builtins__字典自动包含了所有的内建函数和值
eval( 'raw_input("Enter your name: ")' )
#表达式一般不会像语句那样重新为变量赋值
#但是eval确实也可以使用命名空间
#可以提供一个全局的,一个局部的
#全局必须是字典,局部可以是任何形式的映射
scope = {}
exec 'x = 2' in scope
eval('x*x', scope) #指定命名空间scope,呼呼,里面可是有x =2
其实,这两个函数并不常用,但却是一个有力的工具