简单的包装

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

因为它看起来更像一个关键字(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既不是真也不是假。

如果测试布尔值undefindif是否将升高。 也就是说:以下操作将失败:

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

您必须检查身份:

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

对于信息,未定义不是TrueFalse,不是关于标识的未定义

>>> undefined is True
False

>>> undefined is False
False

>>>: undefined is None
False

字符串形式

str(undefined)升高。repr(undefined)是Unicode字符串'Undefined'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误