《Python源码剖析》中用的Python版本为2.5.2

书中所写对

d = {"1":1, "2":2}字典创建语句所得到的字节码为(略有删减):

 1 BUILD_MAP
 2 
 3 DUP_TOP
 4 
 5 LOAD_CONST (1)
 6 
 7 ROT_TWO
 8 
 9 LOAD_CONST ('1')
10 
11 STORE_SUBSCR
12 
13 DUP_TOP
14 
15 LOAD_CONST (2)
16 
17 ROT_TWO
18 
19 LOAD_CONST ('2')
20 
21 STORE_SUBSCR
22 
23 STORE_NAME (d)

其中会有对此对栈顶字典元素的重复创建和栈顶两元素的对调

而在我正在使用的2.6.5版本中 该语句的字节码已变为(略有删减):

 1 BUILD_MAP
 2 
 3 LOAD_CONST (1)
 4 
 5 LOAD_CONST ('1')
 6 
 7 STORE_MAP           
 8 
 9 LOAD_CONST (2)
10 
11 LOAD_CONST ('2')
12 
13 STORE_MAP           
14 
15 STORE_NAME (d)

操作已经简化为了直接取出两元素作为键和值插入到字典中

同时STORE_SUBSCR的功能也有了相应的变化

………………

……………

…………

………

……