首页 > Python > 字符串格式:% vs. .format vs. f 字符串文字那个更好?

字符串格式:% vs. .format vs. f 字符串文字那个更好?

上一篇 下一篇

有多种字符串格式化方法:

  • Python <2.6:"Hello %s" % name
  • Python 2.6+:(使用"Hello {}".format(name)str.format)
  • Python 3.6+:(使用 f 字符串)f"{name}"

哪个更好,适用于什么情况?


  1. 以下方法具有相同的结果,那么有什么区别呢?
    name = "Alice"
    
    "Hello %s" % name
    "Hello {0}".format(name)
    f"Hello {name}"
    
    # Using named arguments:
    "Hello %(kwarg)s" % {'kwarg': name}
    "Hello {kwarg}".format(kwarg=name)
    f"Hello {name}"
    
  2. 字符串格式何时运行,如何避免运行时性能损失?

如果您正在尝试关闭一个重复的问题,而这个问题只是在寻找一种格式化字符串的方法,请使用如何将变量的值放在字符串中?。

分割线

网友回答:

模运算符 (% ) 做不到的事情,afaik:

tu = (12,45,22222,103,6)
print '{0} {2} {1} {2} {3} {2} {4} {2}'.format(*tu)

结果

12 22222 45 22222 103 22222 6 22222

非常有用。

另一点:,作为一个函数,可以在其他函数中用作参数:format()

li = [12,45,78,784,2,69,1254,4785,984]
print map('the number is {}'.format,li)   

print

from datetime import datetime,timedelta

once_upon_a_time = datetime(2010, 7, 1, 12, 0, 0)
delta = timedelta(days=13, hours=8,  minutes=20)

gen =(once_upon_a_time +x*delta for x in xrange(20))

print 'n'.join(map('{:%Y-%m-%d %H:%M:%S}'.format, gen))

结果:

['the number is 12', 'the number is 45', 'the number is 78', 'the number is 784', 'the number is 2', 'the number is 69', 'the number is 1254', 'the number is 4785', 'the number is 984']

2010-07-01 12:00:00
2010-07-14 20:20:00
2010-07-28 04:40:00
2010-08-10 13:00:00
2010-08-23 21:20:00
2010-09-06 05:40:00
2010-09-19 14:00:00
2010-10-02 22:20:00
2010-10-16 06:40:00
2010-10-29 15:00:00
2010-11-11 23:20:00
2010-11-25 07:40:00
2010-12-08 16:00:00
2010-12-22 00:20:00
2011-01-04 08:40:00
2011-01-17 17:00:00
2011-01-31 01:20:00
2011-02-13 09:40:00
2011-02-26 18:00:00
2011-03-12 02:20:00

分割线

网友回答:

回答你的第一个问题… 只是在很多方面似乎更复杂。一个令人讨厌的事情是它如何接受变量或元组。您会认为以下内容始终有效:.format%

"Hello %s" % name

但是,如果碰巧是,它将抛出一个 .为了保证它始终打印,您需要这样做name(1, 2, 3)TypeError

"Hello %s" % (name,)   # supply the single argument as a single-item tuple

这太丑了。 没有这些问题。同样在您给出的第二个示例中,该示例看起来更干净。.format.format

仅将其用于向后兼容 Python 2.5。


为了回答您的第二个问题,字符串格式设置与任何其他操作同时发生 – 当计算字符串格式表达式时。而 Python 不是一种懒惰的语言,它会在调用函数之前计算表达式,因此表达式将首先计算字符串,例如,然后将该字符串传递给 。log.debug("some debug info: %s" % some_info)"some debug info: roflcopters are active"log.debug()

分割线

网友回答:

假设您使用的是 Python 的模块,您可以将字符串格式化参数作为参数传递给该方法,而不是自己进行格式化:logging.debug()

log.debug("some debug info: %s", some_info)

这避免了格式化,除非记录器实际记录了一些东西。

模板简介:该模板名称为【字符串格式:% vs. .format vs. f 字符串文字那个更好?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 210次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-04
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信素材 微信文章 企业网站 自适应 微信图片 微信模板 html5 单页式简历模板 微信公众平台 响应式
您可能会喜欢的其他模板