f-strings 是 python(3.6 及更高版本)的独特功能吗?

Are f-strings a unique feature to python (3.6 and higher)?

使用 f 字符串,您可以直接用一些变量值在字符串中填充 'placeholders'。反对,假设使用经常看到的 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 interpolation as shorthand for some function you would use 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 问题中的示例类似的示例。

shell: 从黑暗时代开始 shells 用于扩展双引号字符串中的参数(以及未引号的参数)。

Perl: Perl 有一个 shellish 的一面,并且至少从那时起在双引号字符串中有 interpolation我买了第 1 版的 Camel 书并开始学习这门语言。

我认为其他人可能更具体地说明了在 Perl 中引入字符串插值的确切日期,但我怀疑它从一开始就存在。

许多其他编程语言,尤其是那些使用 sigils 的编程语言,都共享这种插值概念。