一个简单的包
项目描述
未定义
是否需要作为全局对象,充当None但又不完全是?
例如,对于函数的关键字参数,其中None是有意义的,因此您需要一个默认值。
一个解决方案是创建一个单例对象
mysingleton = object()
尽管这使得在库之间跟踪单例变得困难,并且教导用户从哪里导入这个对象。
在库之间使用单例也相对令人讨厌。
引入undefined
>>> import undefined
>>> from undefined import Undefined
>>> undefined is Undefined
True
行为
它(目前)主要像单例对象一样工作
尽管它既不是真也不是假
>>> if undefined: print(True)
raise NotImplementedError
大小写?
因为它是一个模块,您可以使用小写
import undefined
因为它看起来更像是一个关键字(None
,True
,False
),您可以使用大写
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不是True
,False
,也不是就身份而言的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 查看哈希值)