0

私のコードには含まれています

from __future__ import unicode_literals

完全に機能するために、Unicode文字列を入力として受け入れる(そして期待する)多くの関数があります。

ユーザー (スクリプト、Python、IPython など) が Unicode リテラルも使用するようにする方法はありますか?

my_func("AβC")

エラーは発生しません (「ascii' コーデックはバイト 0xce をデコードできません ...」)。

my_func(u"AβC")

必要ではないですか?

4

1 に答える 1

2

いいえ、unicode_literalsモジュールごとの構成であり、使用するすべてのモジュールにインポートする必要があります。

my_func最良の方法は、 Unicode オブジェクトを期待している の docstring でそれを言及することです。

主張する場合は、早期に失敗するように強制できます。

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

多くの場所で必要な場合は、デコレータで実装する方が良いかもしれません。

Python3.5 以降では、型ヒントを使用してこれを強制できます。

于 2015-11-16T20:05:19.830 に答える