Да, первый действителен, потому что он начинается с #
, который определен в языке как строка комментария, поэтому он игнорируется, и его отступ не завершает функции и не запускает новые.
Последний отличается, это вычисляемая строка, но ее значение никогда не используется, вы можете использовать это для получения многострочных комментариев, но все же интерпретатор попытается оценить эту строку как код, поэтому отступ этой строки имеет значение для интерпретатора, и это может закончиться scopes.
для второго, пишущего что-то вроде
'''comment''''
, - столько же кода для интерпретатора, сколько этот
my_var = '''comment'''
Но это
# comment
игнорируется и не является кодом для интерпретатора.