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

标签 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 会引发语法错误。

最佳答案

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

我认为你应该能够通过以下方式完成此任务:

globals()['Å'] = angstrom

这将在 python2.x 和 python3.x 上“工作”。当然,您的 python2.x 用户将无法在代码中引用它,除非恢复到 getattr(units, 'Å') 等奇怪的黑客行为,但它也不会抛出错误这就是问题的重点(我认为)。

关于python - unicode 标识符而不牺牲 python 2 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35517878/

相关文章:

c++ - UTF-8 编码错误,需要帮助转换文本

perl - 将旧版 Perl 代码移至 UTF-8 时会出现什么问题?

python - 如何在没有渲染模板的情况下将变量从 flask 传递到 HTML?

python - 如何使用 Django 为电子商务网站设计数据库

python - 在 Python 中查找常见数字

将 unicode 符号代码转换为 HTML 中的 utf-8 的 Javascript 函数

java - 如何显示拉丁扩展 A 字符集中的字符串

python - pip 错误 : Bad interpreter when trying to run 'pip install ...' on OS X

python - 尝试使用 scipy 插入 2D 数据 - 只获取 NaN 数组

c++ - Visual Studio C++ UNICODE 相关故障排除循环