2016-05-06 7 views
3

Я вижу в коде других Python других людей, что они вставляют некоторые проверки перед docstring функции; что-то вроде этого:Любые причины для ввода кода перед docstring в Python?

def func(args): 
    if x_version != 1.7: 
    return 
    """docstring is here""" 
    # function body code 
    # ... 

Есть ли случаи, когда вы должны или должны поставить код перед строкой документации, чтобы обойти что-нибудь? Существуют ли какие-либо особые случаи, когда этот стиль должен был быть введен, или это всегда просто плохой стиль и, следовательно, должен быть привязан к чему-то подобному?

def func(args): 
    """docstring is here""" 
    if x_version != 1.7: 
    return 
    # function body code 
    # ... 

ответ

7

Python только подобрать строку документацию, если это первого утверждения в теле функции. Ввод кода перед это означает, что строка просто игнорируется в целом:

>>> def func(args): 
... if x_version != 1.7: 
...  return 
... """docstring is here""" 
... 
>>> func.__doc__ is None 
True 

Вы должны никогда это сделать, если вы хотите на самом деле строка документации иметь никакого эффекта.

От Python reference documentation:

Строковый литерал появляясь как первый оператор в теле функции превращается в атрибут функция в __doc__ и строка документации, следовательно, функции.

Смелый акцент мой.

+0

Это правда. Я использовал модуль 'inspect', чтобы увидеть, есть ли функции без docstrings, и вот как я нашел функцию с перемещенной docstring :), поэтому вы не можете придумать какой-либо особый случай, когда вам нужно поставить любой код Python перед docstring (понимаете, что docstring недоступен для других в среде IDE и т. д.)? –

+0

@AlexTereshenkov: небрежность и «о, я не знал, что» может квалифицироваться как особые случаи. – usr2564301

+0

@AlexTereshenkov: ** это никогда не было причиной для этого. Считайте это ошибкой. –