在Python中将null设置为None,这是一个好习惯吗?

时间:2016-07-06 20:57:47

标签: python null

当我处理从不同语言生成的输入/输出时,我常常在将这些输入/输出输入Python时处理空值。众所周知,None是Python的关键字,而不是null,因此,当null值位于列表中时,通常会产生错误。有些图书馆已经处理过这种情况,但有些图书馆并没有这样做。我只是想知道简单地设置

是否是一个好习惯
null = None

老实说,我以前没见过这件事,但我不知道我是不是在注意。这有什么不好的副作用吗?这甚至是推荐的吗?

编辑:我正在处理的当前作品确实包含eval。我没有这么邪恶的事情哈哈。很久以前有人写过这篇文章。我当时并不知道eval给人的印象。尽管如此,我认为改变评估部分是一个更好的主意。

基本上,创建问题的部分是代码尝试评估其中包含null的列表时。

确切地说,这里的输入是一个包含在字符串中的列表列表。

EDIT2:不要只是投票。我只是问一个问题

3 个答案:

答案 0 :(得分:10)

这不是一个好主意。它表示程序中存在一些模糊性,代码和输入之间的界限模糊不清。

您编写的任何代码都应使用None,而不是设置为None的变量。拥有null常量无济于事,因为您只需编写None

如果您从用户或其他程序获得输入,则该输入将为文本。它将作为"null"存储在字符串变量中。它不是原始标识符null。如果用户输入可以某种方式引用源代码中的变量,那将是一个非常糟糕的设计。这将泄露实施细节。

如果您发现自己使用eval或同等身份,请直接进入监狱,不要通过GO,不要收取200美元。

答案 1 :(得分:5)

你失去了None的优势。试试这个:

None = "Hello"

它不起作用(SyntaxError),因为禁止转让None。创建一个额外的变量null,会在程序的某个未来点引入{em>可能性 {/ 1}}。

只需使用null is not None即可。 None有保障。

答案 2 :(得分:1)

我想你可以收到字符串'null'的输入。但是,这将是一个字符串而不是关键字。你可以随意解析并处理它。我可以想象使用null = None的唯一方法是做任何事情,如果你试图将字符串评估为python代码,如

null = None
`eval('null')`

我会考虑这种糟糕草率编码习惯。