Тройная цитата в python

поэтому я понимаю, что если я сделаю следующее

print """ Anything I 
          type in here 
          works. Multiple LINES woohoo!"""

но что, если следующий мой скрипт python

""" This is my python Script. Just this much """

что делает вышеупомянутая вещь? Это воспринимается как комментарий? Почему это не синтаксическая ошибка?

аналогично, если я делаю

"This is my Python Script. Just this. Even with single quotes."

как интерпретируются вышеупомянутые два сценария?

спасибо

3 ответов


в тройные кавычки ''' или """ просто разные способы представления строк. Преимущество тройных котировок заключается в том, что они могут охватывать несколько строк и иногда служить docstrings.

причина:

"hadfasdfas"

не вызывает никаких ошибок, потому что python просто создает строку, а затем не назначает ее ничему. Для интерпретатора python это прекрасно, если у вас есть бессмысленный оператор в ваш код, пока нет синтаксических или семантических ошибок

надеюсь, что это поможет.


строка просто вычисляется, и интерпретатор, заметив, что она ничему не назначена, выбрасывает ее.

но в некоторых специальных местах, эта строка фактически назначенный __doc__ свойства товара:

def func(arg):
  """
  Does stuff. This string will be evaluated and assigned to func.__doc__.
  """
  pass

class Test:
  """
  Same for Test.__doc__
  """
  pass

вверху module.py:

"""
module does stuff. this will be assigned to module.__doc__
"""
def func():
...

в дополнение к ответу @sshashank124 я должен добавить, что тройные кавычки также используются в тестировании https://docs.python.org/2/library/doctest.html

Итак, рассмотрим этот фрагмент кода:

def some_function(x, y):
"""This function should simply return sum of arguments.
It should throw an error if you pass string as argument

>>> some_function(5, 4)
9
>>> some_function(-5, 4)
-1
>>> some_function("abc", 4)
Traceback (most recent call last):
    ...
ValueError: arguments must numbers
"""
if type(x, str) or type(y, str):
    raise ValueError("arguments must numbers")
else:
    return x + y

if __name__ == "__main__":
    import doctest
    doctest.testmod()

Если вы импортируете этот крошечный модуль, вы получите