使用 f 字符串,您可以使用一些变量值直接在字符串中填充“占位符”。反对,让我们说使用 str.format() 方法,经常看到。
例子:
In [1]: x=3
In [2]: y=4
In [3]: print(f'The product of {x} and {y} is {x*y}.')
The product of 3 and 4 is 12.
这个 f-strings 的概念是否只在 python 中找到?或者是否有任何其他语言支持这一点,可能使用不同的名称?
使用 f 字符串,您可以使用一些变量值直接在字符串中填充“占位符”。反对,让我们说使用 str.format() 方法,经常看到。
例子:
In [1]: x=3
In [2]: y=4
In [3]: print(f'The product of {x} and {y} is {x*y}.')
The product of 3 and 4 is 12.
这个 f-strings 的概念是否只在 python 中找到?或者是否有任何其他语言支持这一点,可能使用不同的名称?
简短的回答:不 - 不是 python 独有的。在 python 中,它是由Literal String Interpolation - PEP 498在 3.6 中引入的
在 C# 中有$ - 字符串插值作为某些函数的简写,您可以将String.Format用于:
string val = "similar";
string s = $"This is {val}" // s == "This is similar"
// vs.
var s2 = string.Format ("This is {0}", val); // {0} = 0th param that follows
您也可以在 Javascript 中的Template Literals名称下找到它。特别是,请参阅表达式插值部分以获取与 OP 问题中的示例类似的示例。
外壳:从黑暗时代开始,外壳用于扩展双引号字符串中的参数(以及不带引号的参数)。
Perl: Perl 有一个脆弱的一面,至少从我购买第一版 Camel 书并开始学习该语言时起,它就在双引号字符串中进行了插值。
我认为其他人可能对 Perl 中引入字符串插值的确切日期更具体,但我怀疑它从一开始就在那里。
许多其他编程语言,尤其是那些使用sigils的编程语言,都共享这种插值概念。