2015-06-29 12 views
1

我正在将%的使用转换为str.format(),并意识到不需要位置编号的字符串。例如,在str.format中使用位置编号()

>>> "We have {0} hectares planted to {1}.".format(49, "okra") 
'We have 49 hectares planted to okra.' 
>>> "We have {} hectares planted to {}.".format(49, "okra") 
'We have 49 hectares planted to okra.' 

什么时候应该使用数字,什么时候应该省略?如果只有一个替代方式更清晰?在我的整个脚本中,不会出现无序的替换,所以我可以使用无数字来保持一致。

我正在为那些不常有编程知识,但经常需要使用/调整脚本的科学家编写脚本。

回答

4

当您不按顺序使用位置参数时使用数字,不止一次,或者您需要支持Python 2.6;后者不支持占位符的自动编号。

当您的占位符和位置参数完全匹配时,自动编号使得编写一个更简单的快速格式。当然,如果你觉得有太多的参数被传入来很容易计算出参数的位置,你应该手动编号,或者更好的是使用关键字参数来代替(将参数映射到参数上更容易跟踪)。 太多是主观的,但我会说7 is the absolute maximum,与5或更少是可取的。

+1

我会除此之外,只要你有超过* *参数,就应该使用数字。一旦格式字符串达到一定的复杂度,根据您认为难以阅读的内容选择幻数。 – poke

+1

@poke:对于大多数人来说,我认为幻数是7(这就是[你的短期记忆通常可以追踪多少个不同的项目或分组](http://www.simplypsychology.org/short-term-memory.html ))。到那个时候,我会切换到使用命名插槽,真的。 –

2

说实话,我觉得这方面最好的形式是

"We have {number} hectares planted to {what}.".format(number=5,what="Okra") 

,因为这是非常非常可读

这个答案主要是根据意见,我知道...