python在哪个参数上区分格式化字符串和普通字符串?

python在哪个参数上区分格式化字符串和普通字符串?,python,string,Python,String,如果格式化字符串和普通字符串的类型相同。函数如何区分何时格式化或何时不格式化 我的猜测是,每当我在字符串之前指定f时,解释器就会提取变量的值并对其进行格式化,然后函数就会接收格式化的字符串 它是一种与Java 8中的lambdas一样的速记符号吗?它们是相同的类型 x = f"There are {n} types of people" print(type(x)==type("HELLO")) #returns True 这只是在Python 3.6中引入的一种将变量插入字符串的新方法 也

如果格式化字符串和普通字符串的类型相同。函数如何区分何时格式化或何时不格式化

我的猜测是,每当我在字符串之前指定
f
时,解释器就会提取变量的值并对其进行格式化,然后函数就会接收格式化的字符串


它是一种与Java 8中的lambdas一样的速记符号吗?

它们是相同的类型

x = f"There are {n} types of people"

print(type(x)==type("HELLO")) #returns True
这只是在Python 3.6中引入的一种将变量插入字符串的新方法

也可以这样写

n = 5
f"There are {n} types of people"
在您的示例中:

n = 5
"There are {:d} types of people".format(n)
x
从来不是f字符串,它只是一个普通字符串,已经用变量
n
的值替换了
{n}

f字符串按语法计算,结果对象类型为
str

来自:

F-strings提供了一种在字符串文本中嵌入表达式的方法,使用最小语法。应该注意,f字符串实际上是在运行时计算的表达式,而不是常量值。在Python源代码中,f字符串是一个文本字符串,前缀为“f”,它包含大括号内的表达式。表达式将替换为其值


(emphasis mine)

请参见:“应该注意,f字符串实际上是在运行时计算的表达式,而不是常量值。”我很难理解您的期望,您认为f字符串会创建一种新类型或类别的字符串吗?为什么?我以为一个函数一次只能接受一个对象。所以,我不知道为什么我认为它应该是一种新类型(来自Java和C++)。翻译的概念对我来说是新的。所以,我觉得它应该在“编译时”作为一个新类型进行解析,并在运行时进行评估@Chris_Randst这种编译类型可能会提供一个新对象,该对象将在运行时进行格式化。另一方面,f-string格式化是所有格式的正确超集吗?@tarunmagnti:No。例如,
datetime.datetime.strftime()
是f-string不支持的一种格式。
x = f"There are {n} types of people"