Python2.6推出了[str.format()]方法,和原有的%格式化方式有小小的区别。那个方法更好?

  1. 下面的方法有同样的输出,它们的区别是什么?

     #!/usr/bin/pythonsub1 = "python string!"sub2 = "an arg"a = "i am a %s" % sub1b = "i am a {0}".format(sub1)c = "with %(kwarg)s!" % {'kwarg':sub2}d = "with {kwarg}!".format(kwarg=sub2)print a    # "i am a python string!"print b    # "i am a python string!"print c    # "with an arg!"print d    # "with an arg!"
    
  2. 另外在Python中格式化字符串什么时候执行?例如如果我的loggin的优先级设置为高,那么我还能用%操作符吗?如果是这样的话,有什么方法可以避免吗?

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

    问题源于:Python string formatting: % vs. .format - Stack Overflow。

第一个问题:

format在许多方面看起来更便利。你可以重用参数,但是你用%就不行。最烦人的是%它无法同时传递一个变量和元组。你可能会想下面的代码不会有什么问题:

"hi there %s" % name

但是,如果name恰好是(1, 2, 3),它将会抛出一个TypeError异常。

>>> name = (1, 2, 3)
>>> "hi there %s" % name
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
>>>

为了保证它总是正确的,你必须这样做:

>>> "hi there %s" % (name,)  # 提供一个单元素的数组而不是一个参数
'hi there (1, 2, 3)'
>>>

但是有点丑,format就没有这些问题。你给的第二个问题也是这样,format好看多了。

你为什么不用它?

  • 不知道它(在读这个之前)
  • 为了和Python2.5兼容

第二个问题:

字符串格式和其他操作一样发生在它们运行的时候。Python是非懒惰语言,在函数调用前执行表达式,所以在你的log.debug例子中,"some debug info: %s"%some_info将会先执行,先生成"some debug info: roflcopters are active",然后字符串将会传递给log.debug()

Python中字符串格式化:%和format相关推荐

  1. python中字符串格式化%与.format

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. python中字符串格式化的形式_Python中format函数字符串格式化入门

    格式化在程序开发中非常常见,大家肯定不陌生,Python中也存在多重格式化方式,format函数就是其中一种. 函数原型format(value[, format_spec]) 参数意义 value: ...

  3. Python中字符串格式化输出的学习笔记

    1 前言 此笔记讲述了如何对字符串进行格式化输出- 2 改变print()输出的颜色 这里我们可以通过字符串命令来改变**print()**输出的颜色: 例如下面的代码: def warning(*a ...

  4. python中字符串格式化

    目的:使用字符串的格式化可以更方便的写字符串,且便于修改. 环境:ubuntu 16.04  python 3.5.2 情景:在表达一个字符串时可能会需要把变量也加进去,用加号感觉比较麻烦,可以用字符 ...

  5. 【Python】Python中字符串格式化实现整数前面自动补0

    有时候我们需要使用格式化的输出,如日期的输出时,月和日都要固定2位,及时是个位数时,这个时候就需要在前面补0,我们可以这样做. 使用format进行格式化 print("{:0>4d} ...

  6. Python之字符串格式化(format)

    2019独角兽企业重金招聘Python工程师标准>>> # 普通调用 "{0}, {1} and {2}".format('spam', 'ham', 'eggs ...

  7. python中字符串格式化符号含义

    %c:格式化字符及其ASCIT码 %s:格式化字符串 %d:格式化整数 %o:格式化无符号八进制数 %x:格式化无符号十六进制数 %f:格式化浮点数字,可指定小数点后的精度 %e:用科学记数法格式化浮 ...

  8. python format函数实例_Python字符串格式化,format格式化函数详细使用

    Python接触比较多的是字符串,那么操作字符串也就多.Python 支持格式化字符串的输出 . 尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符的字符串中. 代码 ...

  9. python字符串format方法参数解释,一文秒懂!Python字符串格式化之format方法详解

    一文秒懂!Python字符串格式化之format方法详解 一文秒懂!Python字符串格式化之format方法详解 format是字符串内嵌的一个方法,用于格式化字符串.以大括号{}来标明被替换的字符 ...

最新文章

  1. 从C语言学习谈编程之路
  2. 根据html页面模板动态生成html页面(c#类)
  3. 干货!全面认识Docker和基本指令
  4. 视频开发(即时通讯平台)
  5. 您自己的MicroProfile Config来源
  6. iOS开发Objective-C基础之──多态
  7. 对公平席位分配问题的探讨:最大余数法、Q值法和D’Hondt方法及其特例|公平分配原则等
  8. IP路由故障关于BGP的疑问解答
  9. Debian下使用OpenLDAP
  10. python爬取网页内容_Python爬虫原理解析
  11. xmind使用教程思维导图
  12. 新浪微博分享 小记!!!(尚未成功)
  13. ganglia集群监控搭建步骤
  14. validated 验证数组_SpringBoot整合表单验证注解@Validated,以及分组验证
  15. 怎么测试软件的自动升级,欧姆龙编程软件怎么升级 自动更新步骤详解
  16. Ueditor基本用法-kityformula-上传图片-手写公式myscript
  17. 马云的教、马云的会、马云的墓
  18. colorbox加载ajax调用的html页面,jQuery的弹出窗口 ColorBox
  19. Java语言十五讲——第二讲 ClassLoader
  20. 对未来人工智能的一些预测和想法

热门文章

  1. navicat不同数据库数据传输
  2. SpringBoot(十) :邮件服务
  3. drop.delete.trauncat的区别
  4. 开源的excel读取库libxls在windows下的编译,且支持中文,全网首发
  5. Spring中DispacherServlet、WebApplicationContext、ServletContext的关系
  6. 几个ubuntu16.04镜像下载地址
  7. void start_kernel(void)分析 ! \linux-1.0\init\main.c
  8. Postgres主进程文件—postmaster.pid
  9. 在数据库中, 不用max()/min()找出一个列中最大/最小值的记录
  10. 用于MCU,基于FreeRTOS的micro(轻量级)ROS