Python f-strings - PEP 498 - 字面字符串插值

这篇具有很好参考价值的文章主要介绍了Python f-strings - PEP 498 - 字面字符串插值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python f-strings 或格式化字符串是格式化字符串的新方法。此功能是在 Python 3.6 中引入的,属于 PEP-498。它也被称为字面字符串插值

我们为什么需要 f-strings?

Python 提供了各种格式化字符串的方式。让我们快速看一下它们以及它们存在的问题。

  • % 格式化 - 适用于简单的格式化,但对于字符串、整数、浮点数的支持有限。我们无法将其用于对象。

  • 模板字符串 - 它非常基础。模板字符串只能使用类似字典的关键字参数。我们不允许调用任何函数,参数必须是字符串。

  • 字符串 format() - Python 字符串 format() 函数是为了克服 %-格式化和模板字符串的问题和有限功能而引入的。然而,它太啰嗦了。让我们通过一个简单的例子来看看它的啰嗦程度。

    >>> age = 4 * 10
    >>> 'My age is {age}.'.format(age=age)
    'My age is 40.'
    

Python f-strings 几乎与 format() 函数类似,但消除了 format() 函数的所有啰嗦。让我们看看如何使用 f-strings 轻松地格式化上面的字符串。

>>> f'My age is {age}'
'My age is 40.'

Python f-strings 是为了实现最小语法的字符串格式化而引入的。表达式在运行时被求值。如果您使用的是 Python 3.6 或更高版本,您应该使用 f-strings 来满足所有您的字符串格式化需求。

Python f-strings 示例

让我们看一个 f-strings 的简单示例。

name = 'Pankaj'
age = 34

f_string = f'My Name is {name} and my age is {age}'

print(f_string)
print(F'My Name is {name} and my age is {age}')  # f 和 F 是相同的

name = 'David'
age = 40

# f_string 已经被求值,现在不会改变
print(f_string)

输出:

My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34
My Name is Pankaj and my age is 34

Python 逐条执行语句,一旦 f-strings 表达式被求值,即使表达式的值发生变化,它们也不会改变。这就是为什么在上面的代码片段中,即使在程序的后半部分’name’和’age’变量发生了变化,f_string 的值仍然保持不变。

1. f-strings 与表达式和转换

我们可以使用 f-strings 将日期时间转换为特定格式。我们还可以在 f-strings 中运行数学表达式。

from datetime import datetime

name = 'David'
age = 40
d = datetime.now()

print(f'Age after five years will be {age+5}')  # age = 40
print(f'Name with quotes = {name!r}')  # name = David
print(f'Default Formatted Date = {d}')
print(f'Custom Formatted Date = {d:%m/%d/%Y}')

输出:

Age after five years will be 45
Name with quotes = 'David'
Default Formatted Date = 2018-10-10 11:47:12.818831
Custom Formatted Date = 10/10/2018

2. f-strings 支持原始字符串

我们也可以使用 f-strings 创建原始字符串。

print(f'Default Formatted Date:\n{d}')
print(fr'Default Formatted Date:\n {d}')

输出:

Default Formatted Date:
2018-10-10 11:47:12.818831
Default Formatted Date:\n 2018-10-10 11:47:12.818831

3. f-strings 与对象和属性

我们也可以在 f-strings 中访问对象属性。

class Employee:
    id = 0
    name = ''

    def __init__(self, i, n):
        self.id = i
        self.name = n

    def __str__(self):
        return f'E[id={self.id}, name={self.name}]'


emp = Employee(10, 'Pankaj')
print(emp)

print(f'Employee: {emp}\nName is {emp.name} and id is {emp.id}')

输出:

E[id=10, name=Pankaj]
Employee: E[id=10, name=Pankaj]
Name is Pankaj and id is 10

4. f-strings 调用函数

我们也可以在 f-strings 格式化中调用函数。

def add(x, y):
    return x + y


print(f'Sum(10,20) = {add(10, 20)}')

输出: Sum(10,20) = 30

5. 带有空格的 f-string

如果表达式中有前导或尾随空格,则它们将被忽略。如果字面字符串部分包含空格,则它们将被保留。

>>> age = 4 * 20
>>> f'   Age = {  age   }  '
'   Age = 80  '

6. 带有 f-string 的 Lambda 表达式

我们也可以在 f-string 表达式中使用 lambda 表达式。

x = -20.45
print(f'Lambda Example: {(lambda x: abs(x)) (x)}')

print(f'Lambda Square Example: {(lambda x: pow(x, 2)) (5)}')

输出:

Lambda Example: 20.45
Lambda Square Example: 25

7. f-string 的其他例子

让我们看一些 Python f-string 的其他例子。

print(f'{"quoted string"}')
print(f'{{ {4*10} }}')
print(f'{{{4*10}}}')

输出:

quoted string
{ 40 }
{40}

这就是关于 Python 格式化字符串(即 f-strings)的全部内容。

您可以从我们的 GitHub 仓库中查看完整的 Python 脚本和更多 Python 示例。

参考:PEP-498,官方文档文章来源地址https://www.toymoban.com/news/detail-827885.html

到了这里,关于Python f-strings - PEP 498 - 字面字符串插值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python标准数据类型-String(字符串)

    ✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1 📃个人主页:hacker707的csdn博客 🔥系列专栏:零基础入门篇 💬个人格言:不断的翻越一座又一座的高山,那样的人生才是我想要的。这一马平川,一眼见底的活,我不想要,我的人生

    2024年02月03日
    浏览(48)
  • typeScript中的类型断言和类型别名、字符串字面量类型

    目录 1.类型断言 语法  2.类型断言的用途 2.1 将一个联合类型断言为其中一个类型   2.2 将一个父类断言为更加具体的子类  2.3 将任何一个类型断言为 any 2.4 将 any 断言为一个具体的类型 类型断言的限制 双重断言 类型断言 vs 类型转换 类型断言 vs 类型声明 类型断言 vs

    2024年02月04日
    浏览(38)
  • 【Python小技巧】df转字符串用df.to_string(),字符串转换回DataFrame怎么办?

    平常我们使用pandas,一般使用的是DataFrame和Series,但个别交换数据的时候,只能使用字符串,我们需要将df转为字符串输出。但交换完的数据,我们又需要将字符串再转回DataFrame格式,这个怎么办呢? 下文我们就来看看,如何处理?文中df代表DataFrame数据。 df转为字符串 dfs

    2024年01月24日
    浏览(46)
  • String字符串

    直接创建 代码简单,节约内存 使用new创建 有new就会开辟一个新的小空间,地址值不同不会复用浪费空间 案例:用户登录 遍历字符串 统计字符个数 拼接字符串 字符串反转 金额转换 手机号屏蔽 敏感词替换 使用场景:1.字符串拼接。2、字符串反转 常用方法练习 对称字符串

    2024年02月16日
    浏览(51)
  • String(字符串)

    java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。 字符串的内容是不会发生改变的,它的对象在创建后不能被更改。 String是Java定义好的一个类。定义在java.lang包中,所以使用的时候不需要导包。 Java程序中的所有字符串文字都被实为此

    2024年02月13日
    浏览(45)
  • 【string题解 C++】字符串相乘 | 翻转字符串III:翻转单词

    目录 字符串相乘 题面 错误记录 Way1 拆分成“先乘后加” 思路 实现 时空复杂度分析 反思 Way2 用数组 思路 实现 时空复杂度分析 翻转字符串III:翻转字符串中的单词 题面 错误记录 思路1 遍历找单词 实现 思路2 暴力解法 实现 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平

    2024年02月07日
    浏览(59)
  • C# 字符串(String)

    C#基础学习入门系列- C# 字符串(String) C#字符串(String)是一种不可变的序列字符。任何对字符串的操作都会返回一个新的字符串。字符串在C#中是一个引用类型,使用System.String类表示。 字符串可以通过使用双引号或者@符号来创建。双引号用于创建普通字符串 ,例如: @符

    2024年01月21日
    浏览(55)
  • redis—String字符串

    目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型,而且其他几种数据结构也都是在字符串类似基础.上构建的,例如列表和集合的 元素类型是字符串类型,所以

    2024年02月02日
    浏览(47)
  • 字符串分割(split),将字符串按照指定字符进行分割。split(String regex)和split(String regex, int limit)

    一、 split(String regex) 字符串分割,将字符串按照指定字符进行分割,返回的是一个字符串数组。 原理:参数名称是 regex 表示的是以某个字符串进行字符分割。 实例1:根据空格切割 输出结果: 实例2:根据特殊字符进行“.”分割 输出结果: 二、 split(String regex, int limit) 字符

    2024年02月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包