“typed=False”是什么意思?

时间:2021-06-27 18:57:46

标签: python

我正在查看(大概)名为“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

1 个答案:

答案 0 :(得分:4)

<块引用>

据我所知,“func=None”似乎意味着“输入中不允许使用函数”(如果我错了,请纠正我),其中“func”指的是对象类型“函数”(即想必大多数程序员都熟悉,因为这是一个基本概念)。但是“typed=False”呢?

这些都不对。

func 是参数名称,而不是类型。 =None 表示如果未提供值,则默认为 Nonetyped 是另一个参数名称; =False 表示默认为 False。参数列表中的*/表示func是一个位置参数(即它总是只是第一个参数,调用者不需要说func=)而 typed 是关键字参数(即调用者必须始终将其指定为 typed=SOMETHING)。

在没有对 Python 语法有基本了解的情况下尝试理解 Python 代码将是非常困难的;这不是您在这里尝试做的事情可以猜到的,尤其是当您直接深入研究装饰器(高阶)函数时,这是一项相对高级的功能,并且要求您已经拥有 非常 牢牢掌握基本功能的工作原理。

我建议您学习 Python 教程,例如https://docs.python.org/3/tutorial/