Я смотрю на (предположительно) встроенный модуль под названием «typing.py», и я пытаюсь понять, что там происходит. Я специально рассматриваю приведенный ниже код, где мы видим входной аргумент под названием «typed=False». Что это вообще значит?
Насколько я понимаю, «func=Нет», по-видимому, означает «функция не разрешена во входных данных» (поправьте меня, если я ошибаюсь), где «функция» относится к объектному типу «функция» (с которой, по-видимому, большинство программистов знакомы, потому что это базовая концепция). Но как насчет «введено=Ложно»?
def _tp_cache(func=None, /, *, typed=False):
"""Internal wrapper caching __getitem__ of generic types with a fallback to
original function for non-hashable arguments.
"""
def decorator(func):
cached = functools.lru_cache(typed=typed)(func)
_cleanups.append(cached.cache_clear)
@functools.wraps(func)
def inner(*args, **kwds):
try:
return cached(*args, **kwds)
except TypeError:
pass # All real errors (not unhashable args) are raised below.
return func(*args, **kwds)
return inner
if func is not None:
return decorator(func)
return decorator
Все это неверно.
func
-это имя параметра, а не тип.=None
означает, что по умолчанию используетсяNone
, если значение не указано.typed
-это другое имя параметра;=False
означает, что по умолчанию используетсяFalse
.*
и/
в списке параметров указывают, чтоfunc
является позиционным параметром (т. Е. это всегда только первый аргумент, вызывающему не нужно указыватьfunc=
), аtyped
является аргументом ключевого слова (т. Е. вызывающий всегда должен указывать его какtyped=SOMETHING
).Пытаюсь понять код Python, не имея базового понимания в Python синтаксис будет крайне сложно; это не то, что вы можете догадаться, как вы пытались сделать здесь, особенно если вы нырять прямо в декоратор (высшего порядка) функции, которые являются относительно расширенная функция и требуют, чтобы вы уже имеете очень четкое представление о том, как базовые функции работают.
Я рекомендую вам пройти через учебник по Python, например https://docs.python.org/3/tutorial/.