使用format()函数加深对Python格式的理解

时间:2019-01-10 10:15:15

标签: python python-3.x

hilarious = False

joke_evaluation = "Isn't that joke so funny?! {}"

print(joke_evaluation.format(hilarious))

对于以下几行Python代码,我无法理解一个关键概念。

为变量joke_evaluation分配了一个字符串,并包含{}以在其中嵌入另一个变量。

第三行代码使我陷入困境,我们是说先打印变量joke_evaluation,然后使用.format()函数并将另一个变量传递给它-hilarious设置为布尔数据类型。

{}是否有效地充当占位符? .format()函数如何知道用变量{}填充hilarious

请尽可能用基本的术语进行解释,以加深我的理解,如上所述,我无法理解Python如何填充花括号{}

3 个答案:

答案 0 :(得分:1)

是的,{}充当占位符,通过.format方法以特殊方式处理。

  

.format()函数如何知道用变量搞笑填充{}?

如果仅提供{},则按位置替换,即

>>> 'first: {}, second: {}'.format(1, 2)
'first: 1, second: 2'

要进行更详细或可重复使用的替换,可以使用命名参数:

>>> "{actor1} tells {actor2} that he's {actor1}".format(actor1='Bob', actor2='Joel')
"Bob tells Joel that he's Bob"

有关超棒字符串格式的更多信息:pyformat.info

有关格式的更多信息,当.format用某些对象替换占位符时,它会在其上调用__format__方法,

  1. 接受格式规范-使您能够控制其转换方式(例如'{:.2f}'.format(3.1415)
  2. 返回str,它将实际上代替占位符

答案 1 :(得分:1)

这是我对format方法的理解:

任何带有大括号{}的字符串都将替换为您提供的变量。所以,如果我有一个字符串说:

myStr = "hello {}"

然后做:

res = myStr.format("user")
print(res) #prints "hello user" without quotes.

现在,这样做:

res = myStr.format(123123)
print(res) #prints "hello 123123" without quotes.

您可能已经猜到,整数123123在包含在字符串中之前已隐式转换为字符串。

现在,进入卷曲的{}部分:

  1. 您可以有多个花括号,并且必须将相同数量的参数传递给format方法。例如: myStr = "hello {},{},{}, nice meeting you" res = myStr.format("abcd",123,"lol") print(res) #prints "hello abcd,123,lol, nice meeting you"
  2. 您甚至可以在{}中放置索引,以指示诸如{0}{1}之类的位置。

答案 2 :(得分:0)

阅读有关字符串的Python文档:https://docs.python.org/3.6/library/string.html?highlight=formatting

:)您需要了解的所有内容。您还可以更改Python版本并查看格式化的行为。

向下滚动以查看示例和说明。