我可以创建一个if语句,打赌可能有更好的方法。
答案 0 :(得分:14)
您可以使用ast.literal_eval
:
In [6]: import ast
In [7]: ast.literal_eval('None') is None
Out[7]: True
但是,如果您只需将if-statement
转换为'None'
,None
或ternary expression会更快:
x = None if x == 'None' else x
答案 1 :(得分:1)
更简洁,
>>> type(eval('None'))
<class 'NoneType'>
如果你有兴趣,基本上,如果你在生产中使用它,比如说在网络服务器上,并且有人提交了一些东西(以某种形式,或其他什么)最终通过eval(),他们&#39 ; d基本上可以访问有限版本的python shell,并在服务器上运行直接写访问。
例如,根据您导入的内容,即使Web服务器代码中的eval()没有直接评估提交的文本,也可以计算出如何通过好的东西,比如,
eval(subprocess.call('sudo rm -rf /'))
,擦除您的服务器,
eval(sys.exit())
停止网络服务器,
和eval(subprocess.call('ls -R -a /'))
列出服务器上的每个文件,然后您可以将其传输到文件中并使用curl将其发送给您自己。
所以,至少可以说这很危险。