所以我在 Python 3.4 中编写文本游戏,需要经常使用print()
函数向用户显示变量。
我一直这样做的两种方式是使用字符串格式和字符串连接:
print('{} has {} health left.'.format(player, health))
和
print(player + ' has ' + str(health) + ' health left.')
哪个更好?它们同样具有可读性和快速键入性能,并且完全相同。哪一个更强 Pythonic 以及为什么?
问题是因为我无法在Stack Overflow上找到一个与Java无关的答案。
答案 0 :(得分:4)
取决于你的字符串有多长以及有多少变量。对于您的用例,我相信string.format
更好,因为它具有更好的性能并且看起来更清晰。
有时对于较长的字符串+
看起来更干净,因为变量的位置保留在它们应该在字符串中的位置,而您不必移动眼睛来映射{}
的位置到相应的变量。
如果你可以设法升级到Python 3.6,你可以使用更新的更直观的字符串格式化语法,如下所示,并且两全其美:
player = 'Arbiter'
health = 100
print(f'{player} has {health} health left.')
如果您有一个非常大的字符串,我建议您使用Jinja2
(http://jinja.pocoo.org/docs/dev/)之类的模板引擎或其他内容。
答案 1 :(得分:4)
format()
更好:
答案 2 :(得分:3)
这取决于您要组合的对象的数量和类型,以及您想要的输出类型。
>>> d = '20160105'
>>> t = '013640'
>>> d+t
'20160105013640'
>>> '{}{}'.format(d, t)
'20160105013640'
>>> hundreds = 2
>>> fifties = 1
>>> twenties = 1
>>> tens = 1
>>> fives = 1
>>> ones = 1
>>> quarters = 2
>>> dimes = 1
>>> nickels = 1
>>> pennies = 1
>>> 'I have ' + str(hundreds) + ' hundreds, ' + str(fifties) + ' fifties, ' + str(twenties) + ' twenties, ' + str(tens) + ' tens, ' + str(fives) + ' fives, ' + str(ones) + ' ones, ' + str(quarters) + ' quarters, ' + str(dimes) + ' dimes, ' + str(nickels) + ' nickels, and ' + str(pennies) + ' pennies.'
'I have 2 hundreds, 1 fifties, 1 twenties, 1 tens, 1 fives, 1 ones, 2 quarters, 1 dimes, 1 nickels, and 1 pennies.'
>>> 'I have {} hundreds, {} fifties, {} twenties, {} tens, {} fives, {} ones, {} quarters, {} dimes, {} nickels, and {} pennies.'.format(hundreds, fifties, twenties, tens, fives, ones, quarters, dimes, nickels, pennies)
'I have 2 hundreds, 1 fifties, 1 twenties, 1 tens, 1 fives, 1 ones, 2 quarters, 1 dimes, 1 nickels, and 1 pennies.'
>>> f'I have {hundreds} hundreds, {fifties} fifties, {twenties} twenties, {tens} tens, {fives} fives, {ones} ones, {quarters} quarters, {dimes} dimes, {nickels} nickels, and {pennies} pennies.'
'I have 2 hundreds, 1 fifties, 1 twenties, 1 tens, 1 fives, 1 ones, 2 quarters, 1 dimes, 1 nickels, and 1 pennies.'
在没有错误的情况下创建大型格式字符串比进行大量连接要容易得多。添加格式字符串可以处理实际格式化的事实,例如对齐或舍入,并且您很快就会在最简单的情况下保留连接,如上所示。