2017-02-21 115 views
1

真的很快又簡單的問題。Python中的.format函數替代

我來愛使用{} .format的,即使我不是格式化變量本身,如:

print("Welcome to {}, {} {}!".format(location,firstname,lastname)) 

,因爲它意味着我沒有把逗號之間的字符串和變量,並且可以直接控制字符串內的間距。但是,如果我仍然這樣做,即使只有一個變量,如

print("I am at {} right now.".format(location)) 

使用這種格式有什麼問題嗎?

有沒有更好的方法來做同樣的事情?

+1

你是什麼意思「更好」?更快?更可讀?最後,單變量插入對於幾乎所有的替代方法來說都是相當快的,而可讀性可能是主觀的(但我最喜歡'format'或python 3.6'f'-strings):) – MSeifert

+0

我喜歡像你一樣使用它,但是我認爲這個問題是基於意見的(不要認爲這是對PEP的指導) –

回答

5

.format()即使只有一個變量也行。在Python 3.6,你也可以使用:

print(f"I am at {location} right now.") 

PEP 0498見討論以獲得更多信息。

1

它沒什麼問題。但是做print("I am at %s right now." % location)可能只有一個變量時更清潔。

編輯 值得注意的是,這種方法是類型特定的。 %s中的s表示「此點是爲字符串保留的。」我也發現this documentation非常有幫助。我學習瞭如何通過閱讀和練習這些示例來以各種方式格式化字符串。您可以在左上角更改Python版本號。

+0

除非'location'不是一個字符串,如果它是一個元組,你會得到問題。 –

+0

@ TadhgMcDonald-Jensen我會在我的答案中添加它是特定於類型的。 – spicypumpkin

2

如果你正在做的只是打印,並且你打印的對象都被相同的字符串(如空格)分開,你可以將它們作爲多個參數傳遞給print

print('I am at', location, 'right now.')