首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"typed=False“是什么意思?

"typed=False“是什么意思?
EN

Stack Overflow用户
提问于 2021-06-27 18:57:46
回答 1查看 95关注 0票数 0

我在看(大概)内置模块"typing.py",我试图了解里面发生了什么。我特别关注下面的代码,在这里我们看到一个名为"typed=False“的输入参数。这到底是什么意思?

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-27 19:07:48

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

所有这些都不正确。

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

尝试理解Python代码而不对Python语法有基本的理解将是非常困难的;这不是像您在这里试图做的那样可以猜测的事情,特别是当您直接深入到修饰器(高阶)函数时,这是一个相对高级的特性,并且要求您已经对基本函数的工作方式有了很好的理解。

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68154402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档