最近在写编译原理的课程设计,发现python一个很奇怪的问题,现在记录在这里:
我新建一个字典,因为有时需要换不同的数据,所以习惯把原来的数据注释掉测试。
但是发现一个很奇怪的bug,就是字典里的多行注释貌似也被当成了数据。
dic_a = {
"""
‘x':2,
'y':3
"""
'a':'b',
'c':'d'
}
print('keys:')
for i in dic_a.keys():
#把字典的值都打印出来
print(i)
print('values:')
for i in dic_a.values():
#把字典的值都打印出来
print(i)
print(dic_a)
#把整个字典打印出来
于是得到了这个奇怪的结果:
仔细想了一下原因,应该是注释也被当作数据了
仔细观察输出后的字典,应该是因为python‘ 和 “ 不区分导致的,第一个元素的键值其实是:
在注释开始到第一个元素a那里
最开头的“和a右边的‘中间那部分:""\n ‘x’:2,\n ‘y’:3\n “”"\n 'a都被当作了第一个键
但是不知道为什么把键值打印出来变成了:
可以看到一些引号消失了
删掉注释后,得到正常结果:
dic_a = {
'a':'b',
'c':'d'}
print('keys:')
for i in dic_a.keys():
print(i)
print('values:')
for i in dic_a.values():
print(i)
print('dic_a:')
print(dic_a)