我一直在使用 Luciano Ramalho 的 Fluent Python 第二版。
在第 5 页,他写道,他尝试在整本书中采用 f string 语法,尽管有时 str.format() 更好。
但是在下面的示例中,他使用
%
格式来解压元组:
traveler_ids = [('USA', '31195855'), ('BRA', 'CE342567'), ('ESP', 'XDA205856')]
# % operator
for passport in sorted(traveler_ids):
print('%s/%s' % passport)
我设法使用其他两种格式化方法解压相同的元组,尽管 f 字符串使用
,
而不是 /
。我从 [SenhorLucas] 得到了这个 f 字符串解决方案,使用逗号分隔,但这可能不如斜杠那么清晰:
# str.format()
for passport in sorted(traveler_ids):
print('{}/{}'.format(*passport))
# f string
for passport in sorted(traveler_ids):
print(f'{*passport,}')
首先我想知道,在这种情况下什么是更清楚的?使用
*passport
时性能有差异吗?
其次,有没有一种简单的方法可以在 f 字符串中使用相同的 / 分隔符来解压?
您可以在枚举排序列表期间解包,这使得 f 字符串的使用更加简单:
traveler_ids = [('USA', '31195855'), ('BRA', 'CE342567'), ('ESP', 'XDA205856')]
for country, passport_number in sorted(traveler_ids):
print(f"{country}/{passport_number}")
# or, avoiding f-string and join (not a recommendation)...
for country, passport_number in sorted(traveler_ids):
print(country, "/", passport_number, sep="")