跳转到主要内容

一个简单的包

项目描述

未定义

是否需要作为全局对象,充当None但又不完全是?

例如,对于函数的关键字参数,其中None是有意义的,因此您需要一个默认值。

一个解决方案是创建一个单例对象

mysingleton = object()

尽管这使得在库之间跟踪单例变得困难,并且教导用户从哪里导入这个对象。

在库之间使用单例也相对令人讨厌。

引入undefined

>>> import undefined
>>> from undefined import Undefined
>>> undefined is Undefined
True

行为

它(目前)主要像单例对象一样工作

尽管它既不是真也不是假

>>> if undefined: print(True)
raise NotImplementedError

大小写?

因为它是一个模块,您可以使用小写

import undefined

因为它看起来更像是一个关键字(NoneTrueFalse),您可以使用大写

import undefined as Undefined

或者

from undefined import Undefined

我在小写(为了简单)和大写之间犹豫不决。

为什么不使用None,与None的区别

undefined可能较慢,并且作为常规Python对象,有一些故意(或非故意)的差异。

None不同,您可以将其赋值

>>> None = 3 
SyntaxError: can't assign to keyword
>>> undefined = 3
>>> undefned
3

None不同,undefined是可变的

>>> undefined.value = 42
>>> undefined.value
42

(可能可以通过__get_attr__来修复)

None不同,undefined既不是真也不是假。

如果您测试undefind的布尔值,则会引发错误。也就是说:以下将失败

value = undefined
if value:
   pass # will raise before reaching here.

您必须检查身份

value = undefined
other = 1
if value is undefined:
    pass # will execute

为了信息,undefined不是TrueFalse,也不是就身份而言的undefined

>>> undefined is True
False

>>> undefined is False
False

>>>: undefined is None
False

字符串形式

str(undefined)引发错误。repr(undefined)是Unicode字符串'Undefined'

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

undefined-0.0.8.tar.gz (3.1 kB 查看哈希值)

上传时间 源代码

构建分发

undefined-0.0.8-py3-none-any.whl (4.8 kB 查看哈希值)

上传时间 Python 3

由以下支持