我一直在寻找的Python代码动态评估,并遇到了eval()和compile()功能,以及exec声明.
有人可以解释之间的区别eval和exec怎样的不同模式,compile()适应吗?
看起来你不能在具有子功能的函数中使用exec ...
任何人都知道为什么这个Python代码不起作用?我在test2的exec上遇到错误.另外,我知道exec的风格并不好,但相信我,我正在使用exec是出于正当的理由.否则我不会用它.
#!/usr/bin/env python
#
def test1():
exec('print "hi from test1"')
test1()
def test2():
"""Test with a subfunction."""
exec('print "hi from test2"')
def subfunction():
return True
test2()
Run Code Online (Sandbox Code Playgroud)
编辑:我把bug缩小到在子功能中有一个功能.它与raise关键字无关.
我刚刚开始一个新的Python项目,理想情况下我想从一开始就提供Python 2和3支持,只需要很少的开发开销.我的问题是,为全新项目做这件事的最佳方法是什么?
作为安装脚本的一部分,我遇到了运行2to3甚至3to2的项目.这似乎是一种非常常见的方式.但是,似乎有几种不同的方法可以做到这一点.我也遇到了Distribute.
还可以选择编写多语言Python 2/Python 3代码.即使这看起来像一个可怕的想法,我注意到我最近编写的代码更像是Python 3代码,尽管我仍然以Python 2运行它.我有一种感觉这只会帮助我自己的过渡时这一天终于到来了,并没有为提供或至少帮助双重支持做多少.
我提供的大多数提供双重支持的项目都是后期添加了Python 3的支持,所以我特别好奇是否有更好的方法更适合新项目,你可以从中获得清晰的好处.
谢谢!