Python - Три кавычки и ХаkеРсkиЙ способ "комментирования" кода

Сегодня расскажу про интересную фитчу - три кавычки)))
Любые три кавычки вида " или же ' скажут Питону, что дальнейшие строки до следующих трёх кавычек нужно воспринимать как многострочную строку (прошу прощение за тавтологию).

str = """ take you mind
and put 
into trash"""
# создали строку из строк вида: "take you mind\nand put\ninto trash", где \n - символ конца строки

#теперь тот же эффект другими кавычками:
str = ''' take you mind
and put 
into trash'''

Но это можно использовать для временного сокрытия от интерпритатора кода:

x = 3.23
"""
print (x)          #выполняться не будет
s = "spam"    #выполняться не будет
"""
y = x+10

Поставив три кавычки интерпритатор просто создаст строку с кодом и потом её удалит))) Тем самым мы его обманываем - Способ УЖАСНЫЙ, так как не красив, и ресурсоёмок - но во время тестирования, и если ваша среда программирования не поддерживает коментирования большого объёма строк, а строк, нуждающихся в комментировании ну уж очень много - это может помочь)))

vedro-compota's picture

мм)) у меня два вот два вопроса =

  1. почему в последнем случае интерпретатор "создаст стоку а потом удалит" - как это связано с "многострочным вводом" ,который в первом случае позволяет задать значение строковой переменной ? правильно ли я понимаю - что это от того, что начало данной "многострочной строки " - пустое - а потому интерпретатор не будет его исполнять?
  2. "обычный (традиционный)" способ многострочного комментирования - как я понимаю для python не определён....да?))

_____________
матфак вгу и остальная классика =)

humanmashine's picture

По первому вопросу: Дело в том, что тут игра особенностью Python - все переменные - это ссылки.
С многострочным вводом это связано тем, что в классическом использовании мы обычно создаём объект выражением справа от присваивания (в данном случае строку) а потом присваиваем ссылку на созданный объект имени слева.
Так в случае "ХаКеРского" комментирования мы создаём объект, но не присваиваем его ничему, так как ссылок на этот объект ноль - то сборщик мусора удалит при возможности этот объект.

Ко второму вопросу:
По моим данным не определён, но среды программирования часто поддерживают комментирования блоков текста - надо использовать это.

В общем. метод этот корявый. и относится к тому "как делать не надо", но иногда, когда нет под рукой удобной среды и уж очень надо закоментировать большой блок кода, и только для каких-то тестовых, временных задач, таких что никто кроме вас не увидит об этом действии и не назовёт вас быдлокодером, этим способом можно воспользоваться.

vedro-compota's picture

благодарю за хорошее объяснение)

_____________
матфак вгу и остальная классика =)