我有一个 python 单元包。我想要两者兼得Å
和angstrom
是埃的两个别名,以便人们可以使用他们喜欢的任何一个(Å
更容易阅读,但angstrom
更容易输入)。由于 unicode 标识符是 forbidden in Python 2 ,Å
选项显然仅在 Python 3 中可用。我的问题是:有没有办法让单个源文件在 Python 2 和 Python 3 中都可以工作,并且仅在 Python 3 中定义此变量?
简单的解决方案 if sys.version_info >= (3,): Å = angstrom
不起作用,因为 Python 2 会引发语法错误。
最佳答案
通常情况下,我不鼓励除 ascii 字符以外的任何变量名称...但是,这是一个有趣的想法,因为埃符号在这种情况下实际具有其标准含义,所以我想我对此很满意时间:-)。
我认为你应该能够通过以下方式完成此任务:
globals()['Å'] = angstrom
这将在 python2.x 和 python3.x 上“工作”。当然,您的 python2.x 用户将无法在代码中引用它,除非恢复到 getattr(units, 'Å') 等奇怪的黑客行为,但它也不会抛出错误这就是问题的重点(我认为)。
关于python - unicode 标识符而不牺牲 python 2 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517878/