简单的包装
undefined的Python项目详细描述
未定义
是否需要一个充当None
但不完全充当None
的全局对象?
例如,函数的关键字参数,其中None
表示sens,因此需要一个默认值。
一种解决方案是创建为singleton对象:
mysingleton = object()
尽管很难跨库跟踪singleton, 教用户从何处导入。
在整个库中使用这个单例也比较烦人。
介绍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
if是否将升高。
也就是说:以下操作将失败:
value = undefined
if value:
pass # will raise before reaching here.
您必须检查身份:
value = undefined
other = 1
if value is undefined:
pass # will execute
对于信息,未定义不是True
,False
,不是关于标识的未定义
>>> undefined is True
False
>>> undefined is False
False
>>>: undefined is None
False
字符串形式
str(undefined)
升高。repr(undefined)
是Unicode字符串'Undefined'