Параметр -OO
влияет только на то, хранится ли строка документа, но не влияет на синтаксический анализ.Например, следующий код работает с включенной оптимизацией и без нее:
def f():
'Empty docstring'
assert f() is None
Программы, которые будут работать с включенной оптимизацией строки документа, - это программы, которые опираются на содержимое строки документа.Пол Ханкин упомянул Ply, инструмент, который использует строки документации для своей логики отправки.Другой пример - модуль doctest , который использует содержимое строк документации для тестов.
Вот простой пример кода, который не будет работать с включенной оптимизацией -OO
:
def f():
'30 + 40'
return eval(f.__doc__)
print f()
Примечание help () по-прежнему будет работать с включенной оптимизацией -OO
, но он найдет только имя функции, аргументы и модуль, но не строку документации:
>>> help(f)
Help on function f in module __main__:
f()