我正在查看(大概)名为“typing.py”的内置模块,我试图了解那里发生了什么。我专门查看下面的代码,在那里我们看到一个名为“typed=False”的输入参数。那有什么意思?
据我了解,“func=None”似乎意味着“输入中不允许使用任何函数”(如果我错了,请纠正我),其中“func”指的是对象类型的“函数”(大概是大多数程序员熟悉,因为它是一个基本概念)。但是“typed=False”呢?
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
Run Code Online (Sandbox Code Playgroud)
据我了解,“func=None”似乎意味着“输入中不允许使用任何函数”(如果我错了,请纠正我),其中“func”指的是对象类型的“函数”(大概是大多数程序员熟悉,因为它是一个基本概念)。但是“typed=False”呢?
这些都不对。
func是参数名称,而不是类型。 =None意味着None如果没有提供任何值,则默认为。 typed是另一个参数名称;=False意味着它默认为False. 参数列表中的*and/表示它func是一个位置参数(即它总是只是第一个参数,调用者不需要说func=)并且typed是一个关键字参数(即它必须总是typed=SOMETHING由调用者指定)。
在没有对 Python 语法有基本了解的情况下尝试理解 Python 代码将是非常困难的;这不是您在这里尝试做的事情可以猜到的,尤其是当您直接深入研究装饰器(高阶)函数时,这是一个相对高级的功能,需要您已经非常牢固地掌握基本功能如何工作。
我建议您阅读 Python 教程,例如https://docs.python.org/3/tutorial/。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |