x = f"There are {n} types of people"
print(type(x)==type("HELLO")) #returns True
如果格式化字符串和普通字符串的类型相同,函数如何区分何时对其进行格式化或不进行格式化?
我猜想每当我在字符串前面指定了f
时,解释器会立即拾取变量的值并将其格式化,函数接收到一个格式化的字符串。
这是否像Java 8中的lambda一样是一种简写符号呢?
x = f"There are {n} types of people"
print(type(x)==type("HELLO")) #returns True
如果格式化字符串和普通字符串的类型相同,函数如何区分何时对其进行格式化或不进行格式化?
我猜想每当我在字符串前面指定了f
时,解释器会立即拾取变量的值并将其格式化,函数接收到一个格式化的字符串。
这是否像Java 8中的lambda一样是一种简写符号呢?
x = f"There are {n} types of people"
x
不是 f-string,它只是一个普通字符串,已经用变量 n
的值替换了 {n}
。
f-string 在语法上进行求值,其结果的对象类型为 str
。
datetime.datetime.strftime()
是一种格式化方式,而f-strings不支持。 - John Zwinck来自PEP 498:
F-strings提供了一种使用最小语法在字符串字面值中嵌入表达式的方法。需要注意的是,f-string实际上是在运行时评估的表达式,而不是一个常量值。在Python源代码中,f-string是一个带有'f'前缀的字面字符串,其中包含花括号内的表达式。这些表达式将被替换为它们的值。
(强调是我的)
它们是相同的类型。
n = 5
f"There are {n} types of people"
是Python 3.6中引入的一种将变量插入字符串的新方法。
这也可以写成:
n = 5
"There are {:d} types of people".format(n)