以下是书中一道例程:
def flatten(nested):
try:
# 不迭代类似于字符串的对象
try:
nested + ''
except TypeError:
pass
else:
raise TypeError
for sublist in nested:
for element in flatten(sublist):
yield element
except TypeError:
yield nested
a = list(flatten([[[1], 'abc'], 3, 4, [5, [6, 7]], [[[8, 9, 10], 11], 12], 13, 14]))
print(a)
按照如书上所说,上面的程序应当报错,可是实际我在pycharm中运行却是成功的,方法定义部分和书中一样,我只是在后面添加了输出语句。实在不明白其中的原理,尤其是raise TypeError,讲其换作raise SyntaxError后,程序就能报错了,我在想是不是两个TypeError会有什么相互作用吗?求解...
慕斯王
相关分类