我可以确保导入我的Python代码的用户使用Unicode文字吗?

时间:2015-11-16 20:01:29

标签: python python-2.7 unicode unicode-literals

我的代码包括

from __future__ import unicode_literals

并且有许多函数接受(并期望)Unicode字符串作为输入以便完全运行。

有没有办法确保用户(在脚本,Python或IPython等中)也使用Unicode文字,例如

my_func("AβC")

不会导致错误(“ascii'编解码器无法解码字节0xce ...”)所以

my_func(u"AβC")

没有必要吗?

1 个答案:

答案 0 :(得分:2)

不,unicode_literals是每个模块的配置,必须在每个要使用它的模块中导入。

最好的方法是在my_func的docstring中提及你期望unicode对象。

如果你坚持,你可以强制它提前失败:

def my_func(my_arg):
    if not isinstance(my_arg, unicode):
        raise Exception('This function only handles unicode inputs')

如果你在很多地方需要它,用装饰器实现它可能会更好。

在python3.5或更高版本上,您可以使用type hints来强制执行此操作。