当我处理从不同语言生成的输入/输出时,我常常在将这些输入/输出输入Python时处理空值。众所周知,None
是Python的关键字,而不是null
,因此,当null
值位于列表中时,通常会产生错误。有些图书馆已经处理过这种情况,但有些图书馆并没有这样做。我只是想知道简单地设置
null = None
老实说,我以前没见过这件事,但我不知道我是不是在注意。这有什么不好的副作用吗?这甚至是推荐的吗?
编辑:我正在处理的当前作品确实包含eval
。我没有这么邪恶的事情哈哈。很久以前有人写过这篇文章。我当时并不知道eval
给人的印象。尽管如此,我认为改变评估部分是一个更好的主意。
基本上,创建问题的部分是代码尝试评估其中包含null
的列表时。
确切地说,这里的输入是一个包含在字符串中的列表列表。
EDIT2:不要只是投票。我只是问一个问题
答案 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')`
我会考虑这种糟糕和草率编码习惯。