2016-05-06 17 views
3

Ich sehe in einigen Leuten Python-Code, dass sie einige Prüfungen vor dem Docstring der Funktion einfügen; so etwas wie dieses:Gibt es einen Grund, Code vor den Docstring in Python zu setzen?

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

Gibt es Fälle, in denen Sie sollten oder zu setzen vor dem docstring einen Code haben, etwas zu umgehen? Gibt es irgendwelche speziellen Fälle, in denen dieser Stil eingeführt werden musste oder es ist immer nur ein schlechtes Styling und muss daher auf so etwas fixiert werden?

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

Antwort

7

Python holt nur einen docstring wenn es die erste Anweisung in der Funktion Körper. Putting-Code, bevor es die Zeichenfolge bedeutet nur ganz ignoriert werden:

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

Sie sollen nie dies tun, wenn Sie den docstring wollen keine Auswirkungen tatsächlich haben.

Vom Python reference documentation:

Ein Stringliteral erscheint als die erste Anweisung in der Funktion Körper in die __doc__ Attribut der Funktion und damit die docstring der Funktion umgewandelt wird.

Fett Hervorhebung meins.

+0

Das stimmt. Ich habe das 'inspect' Modul verwendet, um zu sehen, ob es Funktionen ohne Docstrings gibt und so habe ich die Funktion mit dem verschobenen Docstring gefunden :) so dass man sich keinen Sonderfall vorstellen kann, wenn man vor dem einen Python Code einfügen muss Docstring (zu verstehen, dass der Docstring für andere in IDEs usw. nicht verfügbar ist)? –

+0

@AlexTereshenkov: Sorglosigkeit und "oh sry ich wusste das nicht" kann als Sonderfälle qualifizieren. – usr2564301

+0

@AlexTereshenkov: es gibt ** nie ** einen Grund, dies zu tun. Betrachten Sie es als einen Fehler. –