我能否确保导入我的 Python 代码的用户使用 Unicode 文字?
Can I ensure that users that import my Python code use Unicode literals?
我的代码包括
from __future__ import unicode_literals
并且有许多函数接受(并期望)Unicode 字符串作为输入以充分发挥作用。
有没有办法确保用户(在脚本中,Python 或 IPython 等)也使用 Unicode 文字,例如
my_func("AβC")
不会导致错误 ("ascii' codec can't decode byte 0xce ...") 因此
my_func(u"AβC")
不需要吗?
不,unicode_literals
是每个模块的配置,必须在每个要使用它的模块中导入。
最好的方法就是在 my_func
的文档字符串中提及您需要 unicode 对象。
如果你坚持,你可以强制它提前失败:
def my_func(my_arg):
if not isinstance(my_arg, unicode):
raise Exception('This function only handles unicode inputs')
如果你在很多地方需要它,用装饰器实现它可能会更好。
在 python3.5 或更高版本上,您可以使用 type hints 来强制执行此操作。
我的代码包括
from __future__ import unicode_literals
并且有许多函数接受(并期望)Unicode 字符串作为输入以充分发挥作用。
有没有办法确保用户(在脚本中,Python 或 IPython 等)也使用 Unicode 文字,例如
my_func("AβC")
不会导致错误 ("ascii' codec can't decode byte 0xce ...") 因此
my_func(u"AβC")
不需要吗?
不,unicode_literals
是每个模块的配置,必须在每个要使用它的模块中导入。
最好的方法就是在 my_func
的文档字符串中提及您需要 unicode 对象。
如果你坚持,你可以强制它提前失败:
def my_func(my_arg):
if not isinstance(my_arg, unicode):
raise Exception('This function only handles unicode inputs')
如果你在很多地方需要它,用装饰器实现它可能会更好。
在 python3.5 或更高版本上,您可以使用 type hints 来强制执行此操作。