a=10
b=20
res = (_("result is : %(first) , %(second)") %{'first' : a,'second' : b})
print res
上記のコードの機能を説明できる人はいますか?
a=10
b=20
res = (_("result is : %(first) , %(second)") %{'first' : a,'second' : b})
print res
上記のコードの機能を説明できる人はいますか?
_
通常、モジュールの再定義です。gettext
モジュールは、テキストを多くの言語に翻訳するのに役立つ一連のツールです。
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
http://docs.python.org/2/library/gettext.html
それ以外の場合、%(name)s
文字列で使用する場合は、文字列の書式設定用です。これは、「この辞書で文字列をフォーマットする」という意味です。この場合の辞書は次のとおりです。{'first' : a,'second' : b}
ただし、文字列の構文が間違っていs
ます。括弧の後にがありません。
あなたのコードは基本的に次のように表示されます: result is : 10 , 20s
詳細については、これを読むことができます: Python 文字列フォーマット: % vs. .format
このコードは機能しません:
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 10
>>> b = 20
>>> res = (_("result is : %(first) , %(second)") %{'first' : a,'second' : b})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
しかし、それ以外の場合、これはマップで古いスタイルの書式設定を使用する単純なテキスト書式設定のように見えます。
最初に構文を使用して引数を含む文字列を書き込み、%argument
次にこの構文を使用してこの引数の値を含むマップを指定します。
"This is an argument : %argument " % {'argument' : "Argument's value" }
format
理解しやすく、よりコンパクトで堅牢であるため、これを使用しないで代わりに使用してください。
"This is an argument : {} and this one is another argument : {} ".format(arg1, arg2)