Pythonic方式转换字符串"无"适当的没有

时间:2014-10-21 08:07:24

标签: python nonetype

我可以创建一个if语句,打赌可能有更好的方法。

2 个答案:

答案 0 :(得分:14)

您可以使用ast.literal_eval

In [6]: import ast

In [7]: ast.literal_eval('None') is None
Out[7]: True

但是,如果您只需将if-statement转换为'None'Noneternary expression会更快:

x = None if x == 'None' else x

答案 1 :(得分:1)

更简洁,

>>> type(eval('None'))
<class 'NoneType'>

虽然评估表达式is kinda... eh

如果你有兴趣,基本上,如果你在生产中使用它,比如说在网络服务器上,并且有人提交了一些东西(以某种形式,或其他什么)最终通过eval(),他们&#39 ; d基本上可以访问有限版本的python shell,并在服务器上运行直接写访问。

例如,根据您导入的内容,即使Web服务器代码中的eval()没有直接评估提交的文本,也可以计算出如何通过好的东西,比如,

eval(subprocess.call('sudo rm -rf /')),擦除您的服务器,

eval(sys.exit())停止网络服务器,

eval(subprocess.call('ls -R -a /'))列出服务器上的每个文件,然后您可以将其传输到文件中并使用curl将其发送给您自己。

所以,至少可以说这很危险。