簡體   English   中英

python中的formatter

[英]formatter in python

我正在閱讀python書中的練習,我對這段代碼中發生的事情感到有些困惑。

formatter = "%r %r %r %r"

print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
print formatter % (
    "I had this thing.",
    "That you could type up right.",
    "But it didn't sing.",
    "So I said goodnight."
)

作者沒有解釋每個“打印”后“格式化程序”正在做什么。 如果我刪除它們,所有內容都會完全相同。 我在這里錯過了什么嗎?

不,它不會打印完全相同的東西。 如果您使用formatter % part,則沒有逗號,也沒有括號。

如果擴展格式化程序會更清楚。 我建議你使用:

formatter = "One: %r, Two: %r, Three: %r, Four: %r"

代替。

格式化程序充當模板,每個%r充當右側元組中值的占位符。

formatter是一個字符串。 所以,第一行與以下相同:

"%r %r %r %r" % (1, 2, 3, 4)

它調用右側元組中每個項目的repr ,並用結果替換相應的%r 當然,它完全相同

formatter % ("one", "two", "three", "four")

等等。

請注意,您通常也會看到:

"%s %s %s %s" % (1, 2, 3, 4)

它調用str而不是repr (在你的例子中,我認為strrepr為所有這些對象返回相同的內容,因此如果你將formatter更改為使用%s而不是%r ,輸出將完全相同)

這是字符串格式化的經典格式, print "%r" % var將打印print "%r" % var的原始值,4%r期望在%之后傳遞4個變量。

一個更好的例子是:

formatter = "first var is %r, second is %r, third is %r and last is %r"
print formatter % (var1, var2, var3, var4)

使用formatter變量只是為了避免在打印中使用長行,但通常不需要這樣做。

print "my name is %s" % name
print "the item %i is $%.2f" % (itemid, price)

%.2f是浮點數,逗號后面有2個值。

您可能希望嘗試使用更新的字符串格式變體:(如果您使用的是至少2.6)

print "my name is {name} I'm a {profession}".format(name="sherlock holmes", profession="detective")

更多信息:

http://www.python.org/dev/peps/pep-3101/

http://pythonadventures.wordpress.com/2011/04/04/new-string-formatting-syntax/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM