当前位置: 首页 > 知识库问答 >
问题:

在python中,是否存在某种类型的映射来返回类型的“假值”?

岳飞航
2023-03-14

我正在寻找一种映射函数f(),它的功能类似于:

f(str) = ''
f(complex) = 0j
f(list) = []

这意味着,当强制转换为bool时,它返回类型为False的对象。

这样的功能存在吗?

共有3个答案

夹谷星河
2023-03-14

这实际上被称为标识元素,在编程中通常被视为幺半群定义的一部分。在python中,您可以使用PyMonad包中的mzero函数为类型获取它。哈斯克尔称之为记忆。

乜璞瑜
2023-03-14

不,一般来说,可能没有这样的值。Python数据模型对于如何实现类型的真值非常松散:

对象。__bool__(自我)

调用以实现真值测试和内置操作bool();应该返回False或True。未定义此方法时,如果已定义,则调用\uuuu len\uuuu(),如果结果为非零,则认为该对象为真。如果一个类既不定义\uu len\uuuuuuuuuu()也不定义\uuuuuuu bool\uuuuuuuuuu(),那么它的所有实例都被认为是真的。

因此,请考虑:

import random
class Wacky:
    def __bool__(self):
        return bool(random.randint(0,1))

f(古怪)应该返回什么?

岳池暝
2023-03-14

不,没有这样的映射。并不是每种类型的对象都有错误的值,而其他类型的对象有不止一个错误的值。由于类的真值可以通过\uuuu bool\uuu方法自定义,因此从理论上讲,一个类可以有无限多(不同)的falsy实例。

也就是说,大多数内置类型在没有参数的情况下调用构造函数时返回其falsy值:

>>> str()
''
>>> complex()
0j
>>> list()
[]
 类似资料:
  • 问题内容: 我遵循此处给出的建议,以便使用elasticsearch查找部分单词: ElasticSearchn-gram令牌过滤器未找到部分单词 我创建了一个简单的bash脚本,尝试运行该脚本的一个版本: 运行此脚本后,前两个命令(倾销产品,然后设置索引)似乎可以正常工作: 然后它在映射调用之后给我以下错误: 有人可以看到我在做什么吗?搜索谷歌开始自动完成“映射未找到elasticsearch”

  • 我对Flutter编程非常陌生,我正在尝试导入一个本地JSON文件,其中包含书籍数据,如标题、作者、发布年份等。 最初我使用JSON-to-DART转换器来组装一个图书数据模型,现在我正在尝试创建一个函数,在该函数中,程序获取本地JSON文件,并使用类中的方法将数据解析为地图。 我遇到的问题是返回类型

  • 我在尝试使用JSON_serializable序列化从internet获取的复杂JSON并使用FutureProvider将它们连接在一起时遇到了这个问题。这是json文件, 这是包含序列化类的代码, 获取json文件并将其转换为dart的未来提供者, 这是基因编码, 这是转换后的json文件显示的代码 当我试着运行这个项目时,我遇到了这个错误 i/flutter(23347): type'Lis

  • 我是一个新的颤振和得到类型错误。我正在尝试使用json自动序列化。 在做了一些调整后这里看起来是这样的 下面是我如何尝试从api获取数据 我的类如下所示 谁能帮我一下吗。我被困在这里了。我一直在尝试不同的方法,但都不管用。非常感谢。

  • 我试图从Web API获取数据,我使用此方法获取: 我得到这个错误: 在这方面:

  • 问题内容: 在经历了先前开发人员的代码残骸之后,我意识到我需要移动所有基于资金的列,以不使用浮点数学。在Java方面,这意味着使用BigDecimal,但是在使用Hibernate / JPA和MySQL 5时,适合该列的MySQL数据类型是什么? 问题答案: 十进制和数字。 对于DECIMAL和NUMERIC类型,建议的Java映射是java.math.BigDecimal。java.math.