英文商务网站制作,网站建设移动端官网,优秀网站下载,wordpress网站怎么进入后台Python2.6推出了[str.format()]方法#xff0c;和原有的%格式化方式有小小的区别。那个方法更好#xff1f; 下面的方法有同样的输出#xff0c;它们的区别是什么#xff1f; #!/usr/bin/pythonsub1 python string!sub2 an arga i am a … Python2.6推出了[str.format()]方法和原有的%格式化方式有小小的区别。那个方法更好 下面的方法有同样的输出它们的区别是什么 #!/usr/bin/pythonsub1 python string!sub2 an arga i am a %s % sub1b i am a {0}.format(sub1)c with %(kwarg)s! % {kwarg:sub2}d with {kwarg}!.format(kwargsub2)print a # i am a python string!print b # i am a python string!print c # with an arg!print d # with an arg!另外在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()。