Python 为什么这个方法的参数中有一个f:os.listdir(f';{PATH}valid';)?

Python 为什么这个方法的参数中有一个f:os.listdir(f';{PATH}valid';)?,python,python-3.x,Python,Python 3.x,我参加了fast.ai课程,遇到了以下代码片段(在Python 3中): 这将返回目录data/dogscats/valid中的文件列表,如我所料。但是,我不明白'{PATH}valid'前面的“f”用于什么目的。删除时,代码抛出一个“FileNotFound”错误。为什么“f”在那里?它甚至不是绳子的一部分?我知道这可能是一个基本问题,但我很想理解 提前谢谢你 它是Python 3.6中的新功能,在中引入,它被称为格式化字符串文本的f-string。在Python中有很多方法可以做类似的事情;

我参加了fast.ai课程,遇到了以下代码片段(在Python 3中):

这将返回目录
data/dogscats/valid
中的文件列表,如我所料。但是,我不明白
'{PATH}valid'
前面的“f”用于什么目的。删除时,代码抛出一个“FileNotFound”错误。为什么“f”在那里?它甚至不是绳子的一部分?我知道这可能是一个基本问题,但我很想理解


提前谢谢你

它是Python 3.6中的新功能,在中引入,它被称为格式化字符串文本的
f-string
。在Python中有很多方法可以做类似的事情;最古老的是使用
%
的标准字符串插值,然后是字符串
.format()
方法,现在是
f-strings
,例如:

>>> '%svalid' % 'data/dogscats/'
'data/dogscats/valid'
>>> '{PATH}valid'.format(PATH='data/dogscats/')
'data/dogscats/valid'
>>> PATH = 'data/dogscats/'
>>> f'{PATH}valid'
'data/dogscats/valid'
但是,它可以不仅仅是值的替换,因为您实际上也可以计算表达式:

>>> x = 5
>>> f'The value of {x}^2 is {x**2}'
'The value of 5^2 is 25'
从:

格式化字符串文字或f-string是前缀为
'f'
'f'
的字符串文字。这些字符串可能包含替换字段,这些字段是由大括号
{}
分隔的表达式。虽然其他字符串文字总是有一个常量值,但格式化字符串实际上是在运行时计算的表达式


f-string
实际上是在运行时计算的表达式,而不是常量值。在Python中,f字符串是一个文本字符串,前缀为
f
,它包含大括号内的表达式。表达式将替换为其值


因此,
f'{PATH}valid'
被计算为
data/dogscats/valid

这是一个格式字符串,在Python 3.6中引入
>>> x = 5
>>> f'The value of {x}^2 is {x**2}'
'The value of 5^2 is 25'