首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 选择易懂的名称
4.1 命名风格
4.2 PEP 8 的命名风格
4.3 适当的名称长度
4.3.1 太短的名称
4.3.2 太长的名称
4.4 起易于搜索的名称
4.5 避免笑话、双关语和需要文化背景才能理解的词汇
4.6 不要覆盖内置名称
4.7 史上最差的变量名
第5章 揪出代码的坏味道
5.1 重复的代码
5.2 魔数
5.3 注释掉的代码和死代码
5.4 打印调试
5.5 带有数字后缀的变量
5.6 本该是函数或者模块的类
5.7 嵌套列表解析式
5.8 空的except块和糟糕的错误信息
5.9 代码坏味道的谬误
5.9.1 谬误:函数应该仅在末尾处有一个return语句
5.9.2 谬误:函数最多只能有一个try语句
5.9.3 谬误:使用flag参数不好
5.9.4 谬误:全局变量不好
5.9.5 谬误:注释是不必要的
第6章 编写Python 风格的代码
6.1 Python 之禅
6.2 学着喜欢强制缩进
6.3 使用timeit模块衡量性能
6.4 常被误用的语法
6.4.1 使用enumerate()而不是range()
6.4.2 使用with 语句代替open()和close()
6.4.3 用is 跟None 做比较而不用==
6.5 格式化字符串
6.5.1 如果字符串有很多反斜杠,请使用原始字符串
6.5.2 使用f-string 格式化字符串
6.6 制作列表的浅副本
6.7 以Python 风格使用字典
6.7.1 在字典中使用get()和setdefault()
6.7.2 使用collections.defaultdict()设置默认值
6.7.3 使用字典代替switch 语句
6.8 条件表达式:Python“丑陋”的三元运算符
6.9 处理变量的值
6.9.1 链式赋值和比较运算符
6.9.2 验证变量是否为多个值中的一个
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(二)
小册名称:Python编程轻松进阶(二)
### 第6章 进阶技巧 #### 6.5 格式化字符串 在Python编程中,字符串格式化是一项基础且强大的功能,它允许我们将变量或表达式的值嵌入到字符串文本中,从而生成动态的、易于阅读的输出。随着Python版本的更新,字符串格式化方法也在不断演进,从早期的`%`操作符到`str.format()`方法,再到Python 3.6引入的f-string(格式化字符串字面量),每种方法都有其独特的优势和适用场景。本章将深入探讨这些格式化技术,特别是f-string,帮助读者轻松进阶Python字符串处理的高级技巧。 ##### 6.5.1 `%` 操作符 `%`操作符是Python中最早引入的字符串格式化方法之一,其灵感来源于C语言的printf函数。它使用 `%s`、`%d`、`%f`等格式化说明符来指定变量的类型,并通过`%`符号将变量插入到字符串中。虽然这种方法在Python 2中广泛使用,但在Python 3中,由于其可读性和灵活性不如后续引入的方法,逐渐被更现代的方式所取代。 ```python name = "Alice" age = 30 print("My name is %s and I am %d years old." % (name, age)) ``` 尽管`%`操作符仍然有效,但在编写新代码时,推荐使用更现代的格式化方法。 ##### 6.5.2 `str.format()` 方法 `str.format()`方法提供了一种更为灵活和强大的字符串格式化方式。它使用大括号`{}`作为占位符,并在`str.format()`方法中通过位置参数或关键字参数来填充这些占位符。`str.format()`支持多种格式化选项,包括数字格式化、对齐、填充等,使得生成复杂格式的字符串变得简单直接。 ```python name = "Bob" age = 25 print("My name is {} and I am {} years old.".format(name, age)) # 使用关键字参数提高可读性 print("My name is {name} and I am {age} years old.".format(name=name, age=age)) # 数字格式化示例 number = 123.456 print("{:.2f}".format(number)) # 输出: 123.46 ``` `str.format()`方法的灵活性使得它成为Python 2到Python 3过渡期间广泛推荐的字符串格式化方式。 ##### 6.5.3 f-string(格式化字符串字面量) Python 3.6引入的f-string(也称为格式化字符串字面量)是一种非常简洁且高效的字符串格式化方法。它以`f`或`F`为前缀,并在字符串中直接嵌入表达式。Python会在运行时计算这些表达式,并将其结果转换为字符串,然后将其插入到字符串的相应位置。f-string因其简洁性和高效性,迅速成为Python社区中最受欢迎的字符串格式化方式。 ```python name = "Charlie" age = 28 print(f"My name is {name} and I am {age} years old.") # f-string中也可以包含复杂的表达式 salary = 5000 print(f"My monthly salary is {salary}, and my annual salary is {salary * 12}.") # 与其他格式化选项结合使用 number = 123456789 print(f"The number {number:,} in comma-separated format is {number:,d}.") # 输出: The number 123,456,789 in comma-separated format is 123,456,789. ``` f-string的简洁性不仅体现在代码编写上,还体现在其执行效率上。由于f-string是在运行时直接计算的,因此它通常比`str.format()`和`%`操作符更快。 ##### 6.5.4 格式化字符串的高级应用 除了基本的字符串格式化外,f-string还支持一些高级功能,如多行字符串、嵌套表达式、以及调用对象的`__format__`方法等。 - **多行f-string**:f-string可以跨越多行,这使得在需要生成复杂多行文本时更加便捷。 ```python name = "Diana" age = 32 profile = f""" Name: {name} Age: {age} Profession: Software Engineer """ print(profile) ``` - **嵌套表达式**:f-string中的表达式可以嵌套,允许你执行更复杂的计算或逻辑判断。 ```python x = 10 y = 20 print(f"The result of {x} * {y} is {x * y if x * y > 100 else 'less than 100'}.") ``` - **调用对象的`__format__`方法**:如果对象定义了`__format__`方法,则可以在f-string中直接使用该方法来格式化对象。 ```python class Point: def __init__(self, x, y): self.x = x self.y = y def __format__(self, spec): if spec == '.coords': return f"({self.x}, {self.y})" return str(self) p = Point(3, 4) print(f"{p:.coords}") # 输出: (3, 4) ``` ##### 6.5.5 总结 字符串格式化是Python编程中不可或缺的一部分,它使得动态生成字符串变得更加简单和灵活。从`%`操作符到`str.format()`方法,再到f-string,Python不断演进,提供了越来越强大且易用的字符串格式化工具。f-string以其简洁性和高效性,成为了现代Python编程中的首选字符串格式化方式。掌握这些技术,将有助于你在Python编程中更加高效地处理字符串,编写出更加清晰、易读的代码。
上一篇:
6.4.3 用is 跟None 做比较而不用==
下一篇:
6.5.1 如果字符串有很多反斜杠,请使用原始字符串
该分类下的相关小册推荐:
Python自动化办公实战
Selenium自动化测试实战
Python编程轻松进阶(五)
Python编程轻松进阶(四)
Python编程轻松进阶(三)
Python合辑5-格式化字符串
Python合辑2-字符串常用方法
Python编程轻松进阶(一)
Python面试指南
Python爬虫入门与实战开发(下)
Python与办公-玩转Excel
Python数据分析与挖掘实战(上)