日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中字符串格式化:%和format

發布時間:2024/7/5 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中字符串格式化:%和format 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

  • 下面的方法有同樣的輸出,它們的區別是什么?

    #!/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!"
  • 另外在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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。