首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-3.6中带有'f‘前缀的字符串

python-3.6中带有'f‘前缀的字符串
EN

Stack Overflow用户
提问于 2016-03-02 10:49:29
回答 4查看 37.6K关注 0票数 69

我正在试用Python3.6。在浏览新代码时,我偶然发现了这个新语法:

代码语言:javascript
复制
f"My formatting string!"

看来我们可以做这样的事:

代码语言:javascript
复制
>>> name = "George"
>>> print(f"My cool string is called {name}.")
My cool string is called George.

有人能说明一下这件事的内部运作吗?特别是,f前缀字符串可以接受的变量范围是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-02 10:50:52

请参阅PEP 498

从字符串中提取的表达式在f-字符串出现的上下文中进行计算。这意味着表达式完全可以访问局部变量和全局变量。可以使用任何有效的Python表达式,包括函数和方法调用。

因此,表达式的计算方法就好像它们出现在相同的作用域中一样;局部变量、闭包和全局值都与在相同上下文中的其他代码一样工作。

您将在reference documentation中找到更多的细节

格式化字符串文本中的表达式被视为被括号包围的正则Python表达式,只有少数例外。不允许使用空表达式,lambda表达式必须被显式括号包围。替换表达式可以包含换行符(例如,在三引号字符串中),但不能包含注释。每个表达式都按照从左到右的顺序,在显示格式化字符串文字的上下文中进行计算。

由于您正在尝试3.6alpha构建,请阅读 documentation。它总结了所有更改,包括指向相关文档和PEP的链接。

而且要明确的是: 3.6还没有发布;第一个alpha预计要到2016年5月才能发布。见3.6 release schedule

票数 61
EN

Stack Overflow用户

发布于 2017-07-21 08:25:40

f-字符串还支持大括号内的任何表达式。

代码语言:javascript
复制
print(f"My cool string is called {name.upper()}.")
票数 14
EN

Stack Overflow用户

发布于 2018-04-22 06:35:25

同样值得注意的是,这个PEP498有一个支持Python <3.6的后端。

pip install fstring

代码语言:javascript
复制
from fstring import fstring

x = 1

y = 2.0

plus_result = "3.0"

print fstring("{x}+{y}={plus_result}")

# Prints: 1+2.0=3.0
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35745050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档