2015-10-11 3 views
21

Не могу понять, что делает print(__doc__) в начале скрипта, например in this Scikit example.print (__ doc__) в скрипте Python 3

Я искал Python docstrings в google, и кажется, __doc__ полезен для предоставления некоторой документации, например, в функциях. Но я не вижу, что делает __doc__ в середине скрипта.

ответ

39

кажется __doc__ полезно предоставить некоторые документы, скажем, функции

Это верно. В дополнение к функциям документация также может предоставляться в модулях. Таким образом, если у вас есть файл с именем mymodule.py так:

"""This is the module docstring.""" 

def f(x): 
    """This is the function docstring.""" 
    return 2 * x 

Вы можете получить доступ к его строки документации, как это:

>>> import mymodule 
>>> mymodule.__doc__ 
'This is the module docstring.' 
>>> mymodule.f.__doc__ 
'This is the function docstring.' 

Теперь, возвращаясь к вашему вопросу: что print(__doc__) делать? Проще говоря: он печатает модуль docstring. Если не указана docstring, __doc__ по умолчанию None.

+0

Красиво объяснено! – shadow0359

11

Любая функция, класс или модуль, начинающийся со строкового литерала, содержит непустые __doc__; эта начальная строка берется как строка документации; он будет установлен в None, если такой строки нет. См. docstring term definition в глоссарии Python.

При загрузке этого пример Scikit скрипта, вы увидите, что она начинается с такой строкой:

""" 
================================ 
Recognizing hand-written digits 
================================ 

An example showing how the scikit-learn can be used to recognize images of 
hand-written digits. 

This example is commented in the 
:ref:`tutorial section of the user manual <introduction>`. 

""" 

print(__doc__) команда просто повторно использует эту строку документации, чтобы записать его на терминал каждый раз при запуске скрипт и любой другой инструмент python (например, функция интерактивного интерпретатора help()) могут отобразить такое же значение.

+0

Спасибо! Мне не было смысла видеть «print (__ doc __)» без просмотра документации (которую я не мог видеть без загрузки скрипта). – Tanguy

Смежные вопросы