可以在首次创建变量时将modulo(%s)放在字符串中,然后再使用吗?

时间:2017-05-18 02:39:48

标签: python python-3.x dictionary modulo

我对python很新,所以如果这是一个愚蠢的问题,请原谅我。我知道如何以这种方式在字符串中使用模数

Me = "I'm %s and I like to %s" % ('Mike', 'code')

然而,通过我的搜索,我还没有找到答案,是否可以将模数硬编码为字符串,然后再利用它。

示例:

REPO_MENU = {'Issues':Api.github/repo/%s/branch/%s/issues,
         'Pull Requests':'Api.github/repo/%s/branch/%s/pull_requests',
         'Commits':'Api.github/repo/%s/branch/%s/commits'
         '<FILTER>: Branch':'Api.github/repo/%s/branch/%s'
        }

for key, value in REPO_MENU.items():
    Print value % ('Beta', 'master')

这种格式有用吗?使用这种方法是一种好习惯吗?我觉得它在很多情况下都会有所帮助。

3 个答案:

答案 0 :(得分:1)

这确实有效。您也可以使用格式功能,效果很好。例如:

menu1 = {'start':'hello_{0}_{1}',
        'end':'goodbye_{0}_{1}'}

menu2 = {'start':'hello_%s_%s',
        'end':'goodbye_%s_%s'}

for key, value in menu1.items():
    print value.format('john','smith')

for key, value in menu2.items():
    print value %('john','smith')

答案 1 :(得分:1)

%是一个像其他任何人一样的运营商;当它的左侧操作数是一个字符串时,它会尝试用右侧操作数中的值替换各种占位符。如果左侧操作数是字符串文字或更复杂的表达式,只要它计算为字符串就无关紧要。

答案 2 :(得分:1)

正如其他答案所指出的那样,你绝对可以在同一个字符串上多次执行字符串模运算。但是,如果你使用的是Python 3.6(如果可以,你肯定应该!),我建议你use fstrings而不是字符串模数或.format。它们是faster,更易于阅读,而且非常方便:

  

格式化的字符串文字或字符串字符串是以&#39; f&#39;为前缀的字符串文字。或者&#39; F&#39;。这些字符串可能包含替换字段,这些字段是由大括号{}分隔的表达式。虽然其他字符串文字总是具有常量值,但格式化字符串实际上是在运行时计算的表达式。

因此f-string也是可移植的,就像其他格式化选项一样。

E.g:

>>> value = f'A {flower.lower()} by any name would smell as sweet.'
>>> flower = 'ROSE'
>>> print(value)
A rose by any name would smell as sweet.
>>> flower = 'Petunia'
>>> print(value)
A petunia by any name would smell as sweet.
>>> flower = 'Ferrari'
>>> print(value)
A ferrari by any name would smell as sweet.

您可以使用f-string将其添加到任何模块的顶部,作为其他用户(或未来您)的有用提醒:

try: 
    eval(f'')
except SyntaxError:
    print('Python 3.6+ required.')`.
    raise