Как мне использовать Python 3.8 __text_signature__?
Я играю с функциями и такими в Python 3.8, когда я сталкиваюсь с этим:
bpo-36542: подпись функций Python теперь может быть переопределена указанием
__text_signature__
приписывать.
Он говорит, что он должен быть совместимым с функциями C (встроенными) и функциями Python. Достаточно просто, но я попытался немного поработать, и кажется, что есть несколько ограничений на значение, которое он может иметь (читай: правильно показывает на help(func)
).
>>> def tesr(*args, **kwargs):
... """docstring."""
... return args, kwargs
...
>>> help(tesr)
Help on function tesr in module __main__:
tesr(*args, **kwargs)
docstring.
>>> tesr.__text_signature__ = "(a, b, c=None)"
>>> help(tesr)
Help on function tesr in module __main__:
tesr(a, b, c=None)
docstring.
>>> tesr.__text_signature__ = "(f0zb4z)"
>>> help(tesr)
Help on function tesr in module __main__:
tesr(f0zb4z)
docstring.
>>> tesr.__text_signature__ = "tesr"
>>> help(tesr)
Help on function tesr in module __main__:
tesr(...)
docstring.
>>>
Каковы причины этого дополнения и как мы можем его использовать? Хотя это меняет все подсказки этой функции, как это может повлиять на аргументы, которые она принимает?