在VSCode中训练写代码的时候,习惯于使用快代码注释,其中快捷键是“Shift+Alt+A”,但是今天发现了一个错误。
源代码是矩阵转置:
matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
#矩阵转置
def printmatrix(m):
for ele in m:
for e in ele:
print("%2d" % e, end=' ')
print('')
def transmatrix(m):
""" # rt = [[]for i in m[0]]
# for ele in m:
# for i in range(len(ele)):
# rt[i].append(ele[i])
# print(rt[i])
# return rt """
return list(zip(*m))
printmatrix(matrix)
print('-' * 40)
printmatrix(transmatrix(matrix))
报错是:
重点是最后一句:
IndentationError: expected an indented block
缩进错误,想了想,注释应该不会影响代码,于是就把注释块后面的代码提到了前面,错误消失。
def transmatrix(m):
return list(zip(*m))
""" # rt = [[]for i in m[0]]
# for ele in m:
# for i in range(len(ele)):
# rt[i].append(ele[i])
# print(rt[i])
# return rt """
本着学习的态度研究了一下,将块注释转换成行注释,这里由于直接使用快捷键,所以效果变成了:
发现也能解决问题,这就有意思了。
恢复到块注释的状态,仔细看了一下原来的错误,“IndentationError: expected an indented block”,缩进错误:预期缩进错误块,特地去查了一下python语法关于注释的解释,发现注释的本质其实是转义的常量。
在python语句中,字面常量(字面常量:包括整形常量,字符型常量,字符串常量。)是会被认为一个单独的语句,也就是原本代码的注释块或者单行注释是一个正常的语句,这就有意思了。
把代码截图放在一起就可以发现问题:
上图代码能够正确执行
上图代码报错
上图代码可以正确执行。
这样也就明白了:python中块注释,也就是这种所谓的多行注释,本质是一条条的代码,也存在缩进问题,那么日常中看来还是。python由于缩进问题所引发的细节的思考值得大家注意。
看来未来python中的代码注释要么使用单行的#开头的注释,要么使用块注释的时候尽量注意和其他代码块(block)区分开来。