
解析:A选项,变量b属于全局变量,所以应该使用global声明而不是nonlocal;B选项,可以使用_作为占位符,所以B选项不会报错;C选项,python3.x中,使用列表生成式,中间变量b在生成列表后被销毁,因此再次使用变量b会报错;D选项,集合元素不能是列表这类不可散列对象,因此会报错。
拓展:
D:报TypeError: unhashable type: 'list'错
list 不使用 hash 值进行索引,故其对所存储元素没有可哈希的要求;set / dict 使用 hash 值进行索引,也即其要求欲存储的元素有可哈希的要求。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的。
(但是貌似java中对于map的key没有这种强制性要求,试了一下可以使用List作为map的key)
补充:元组中含有列表也不能作为dict的key(因为列表值可能会变,要保证其unhashable性)