我经常看到以下模式,并想知道是否有一种避免重复的方法。
life = 42
badger = some_function()
s = "({life}, {badger})".format(life=life,badger=badger)
本地变量通常具有与字符串中其含义相对应的连贯名称。我目前正在使用更简洁的:
s = "({0}, {1})".format(life,badger)
使用关键字通常更清晰。是否有一种通用/简洁的方法来获取格式以在包含函数的词汇环境中查找关键字?
s = "({life}, {badger})".format(env())
谢谢!
python 3.6已经用字符串插值来解决此问题;f-strings:
>>> life = '2'
>>> badger = 'more'
>>> f'{life} {badger}'
'2 more'
如果升级不会花费太多,那么您可以朝这个方向看。
您可以使用locals()
。
s = "({life}, {badger})".format(**locals())
如果您不能使用f-strings,则可以选择将locals()
与**kwargs
参数传递形式一起使用:
>>> a = 3
>>> b = 5
>>> '{a} {b}'.format(**locals())
'3 5'
摩西的答案对于python 3
很棒如果您需要python 2的东西,则可以尝试以下操作:
以某种方式提出了dict
In [6]: env = dict(life=42, badger='badger')
In [7]: env
Out[7]: {'badger': 'badger', 'life': 42}
In [11]: "({life}, {badger})".format(**env)
Out[11]: '(42, badger)'
In [12]: "({0}, {1})".format(*env)
Out[12]: '(life, badger)'
In [13]:
与Os.environ
的示例In [13]: import os
In [14]: "({0}, {1})".format(*os.environ)
Out[14]: '(VIEWCLIENT_WINDOWS_TIMEZONE, VIEWCLIENT_BROKER_DOMAINNAME)'
In [15]:
免责声明:我很早和咖啡前阅读。在技术工作的同时。其他人是正确的,您可以使用当地人代替OS.Environ。
我更专注于使用 *'s