unicode标识符,不牺牲python 2兼容性

时间:2016-02-20 01:08:47

标签: python unicode

我有一个python单元包。我希望Åangstrom都是埃的两个别名,以便人们可以使用他们喜欢的任何一个(Å更容易阅读但angstrom更容易类型)。由于unicode标识符为forbidden in Python 2Å选项显然只能在Python 3中使用。我的问题是:有没有办法让单个源文件在Python 2和Python 3中都有效,并且只在Python 3中定义了这个变量吗?

天真的解决方案if sys.version_info >= (3,): Å = angstrom不起作用,因为Python 2会引发语法错误。

1 个答案:

答案 0 :(得分:3)

通常情况下,我不鼓励除变量名的ascii字符以外的任何东西......但是,这是一个有趣的想法,因为在这种情况下,angstrom符号实际上具有它的标准含义所以我想我很酷它时间: - )。

我认为你应该能够通过以下方式实现这一目标:

globals()['Å'] = angstrom

这将在python2.x和python3.x上“正常工作”。当然,你的python2.x用户将无法在他们的代码中引用它而不会回到像getattr(units, 'Å')这样的奇怪的黑客攻击,但它不会引发错误,这也是问题的关键点(我认为) )。