Why can't I use the format function with docstrings?

docstring, python

Solution

The Python interpreter looks for string literals only. Adding a `.format()` method call is not supported, not for the function definition syntax. It is the compiler that parses out the docstring, not the interpreter, and any variables like `weightings` are not available at that time; no code execution takes place at this time.

You can always update a docstring after the fact:

def apply_weighting(self, weighting):
    """
    Available functions: {}
    """

apply_weighting.__doc__ = apply_weighting.__doc__.format(weightings)

Problem

I have a function that starts like this: ``` def apply_weighting(self, weighting): """ Available functions: {} """.format(weightings) ``` What I want is for the docstring to print the dictionary of available weighting functions. But when inspecting the function it states that there are no docstring available: ``` In [69]: d.apply_weighting? Type: instancemethod String Form:<bound method DissectSpace.apply_weighting of <dissect.DissectSpace instance at 0x106b74dd0>> File: [...]/dissect.py Definition: d.apply_weighting(self, weighting) Docstring: <no docstring> ``` How come? Is it not possible to format a docstring?

Original source