我有一个python单元包。我希望Å
和angstrom
都是埃的两个别名,以便人们可以使用他们喜欢的任何一个(Å
更容易阅读但angstrom
更容易类型)。由于unicode标识符为forbidden in Python 2,Å
选项显然只能在Python 3中使用。我的问题是:有没有办法让单个源文件在Python 2和Python 3中都有效,并且只在Python 3中定义了这个变量吗?
天真的解决方案if sys.version_info >= (3,): Å = angstrom
不起作用,因为Python 2会引发语法错误。
答案 0 :(得分:3)
通常情况下,我不鼓励除变量名的ascii字符以外的任何东西......但是,这是一个有趣的想法,因为在这种情况下,angstrom符号实际上具有它的标准含义所以我想我很酷它时间: - )。
我认为你应该能够通过以下方式实现这一目标:
globals()['Å'] = angstrom
这将在python2.x和python3.x上“正常工作”。当然,你的python2.x用户将无法在他们的代码中引用它而不会回到像getattr(units, 'Å')
这样的奇怪的黑客攻击,但它不会引发错误,这也是问题的关键点(我认为) )。