毛乌素之鹰 發表於 2025-5-26 16:35:00

🚀 Python f-string 全攻略:从入门到大师,让你的编码效率翻倍!

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>什么是 f-string</li><li>基础用法<ul><li>变量插值</li><li>表达式嵌入</li><li>调用函数</li></ul></li><li>数字格式化<ul><li>千位分隔符</li><li>控制小数位数</li><li>百分比转换</li><li>科学计数法</li></ul></li><li>文本对齐与填充<ul><li>填充对齐</li><li>自定义填充字符</li></ul></li><li>日期时间格式化</li><li>进阶技巧<ul><li>嵌套 f-string</li><li>动态格式化参数</li><li>表格对齐</li><li>自记录表达式(调试输出)</li></ul></li><li>与其他格式化方法的对比</li></ul></div><p></p>
<h2 id="什么是-f-string">什么是 f-string</h2>
<p><code>f-string</code> 是 Python 3.6 引入的一种字符串格式化方法。通过在字符串前加 <code>f</code> 或 <code>F</code> 前缀,直接在 <code>{}</code> 中嵌入变量或表达式。相比传统的 <code>%</code> 格式化和 <code>str.format()</code> 方法,<code>f-string</code> 执行速度更快,并且支持复杂的格式化操作,如数字精度控制、对齐、日期格式化等,甚至可用于代码调试。</p>
<h2 id="基础用法">基础用法</h2>
<h3 id="变量插值">变量插值</h3>
<pre><code class="language-python">name: str = "张三"
age: int = 25
print(f"我是{name},今年{age}岁。")
# 输出: 我是张三,今年25岁。
</code></pre>
<h3 id="表达式嵌入">表达式嵌入</h3>
<pre><code class="language-python">x, y = 10, 20
print(f"{x} + {y} = {x + y}")
# 输出: 10 + 20 = 30
</code></pre>
<h3 id="调用函数">调用函数</h3>
<pre><code class="language-python">def square(n):
    return n ** 2

num = 5
print(f"{num} 的平方等于 {square(num)}")
# 输出: 5 的平方等于 25
</code></pre>
<h2 id="数字格式化">数字格式化</h2>
<h3 id="千位分隔符">千位分隔符</h3>
<pre><code class="language-python">money = 1000000000
print(f"{money:,} 元")
# 输出: 1,000,000,000 元
print(f"{money:_} 元")
# 输出: 1_000_000_000 元
</code></pre>
<h3 id="控制小数位数">控制小数位数</h3>
<pre><code class="language-python">pi = 3.1415926535
print(f"四舍五入到两位: {pi:.2f}")
# 输出: 四舍五入到两位: 3.14
print(f"四舍五入到整数: {pi:.0f}")
# 输出: 四舍五入到整数: 3
</code></pre>
<h3 id="百分比转换">百分比转换</h3>
<pre><code class="language-python">ratio = 0.75
print(f"百分比: {ratio:.2%}")
# 输出: 百分比: 75.00%
</code></pre>
<h3 id="科学计数法">科学计数法</h3>
<pre><code class="language-python">value = 0.0001234
print(f"科学计数法: {value:.2e}")
# 输出: 科学计数法: 1.23e-04
</code></pre>
<h2 id="文本对齐与填充">文本对齐与填充</h2>
<h3 id="填充对齐">填充对齐</h3>
<pre><code class="language-python">text = "Python"
print(f"填充10字符左对齐: '{text:&lt;10}'")      # 左对齐
# 输出: 填充20字符左对齐: 'Python            '
print(f"填充10字符右对齐: '{text:&gt;10}'")      # 右对齐
# 输出: 填充20字符右对齐: '            Python'
print(f"填充10字符居中对齐: '{text:^10}'")    # 居中对齐
# 输出: 填充20字符居中对齐: '       Python       '
</code></pre>
<h3 id="自定义填充字符">自定义填充字符</h3>
<pre><code class="language-python">text = "Python"
print(f"{text:_^20}")
# 输出: _______Python_______
print(f"{text:#^20}")
# 输出: #######Python#######
</code></pre>
<h2 id="日期时间格式化">日期时间格式化</h2>
<pre><code class="language-python">from datetime import datetime

now = datetime.now()
print(f"日期: {now:%Y-%m-%d}")
# 输出: 日期: 2025-05-26
print(f"时间: {now:%H:%M:%S}")
# 输出: 时间: 15:01:15
print(f"当地时间: {now:%c}")
# 输出: 当地时间: Mon May 26 15:01:15 2025
print(f"12小时制: {now:%I%p}")
# 输出: 12小时制: 03PM
</code></pre>
<h2 id="进阶技巧">进阶技巧</h2>
<h3 id="嵌套-f-string">嵌套 f-string</h3>
<pre><code class="language-python">value = 42
print(f"{f'The value is {value}':^30}")
# 输出: '       The value is 42      '
</code></pre>
<h3 id="动态格式化参数">动态格式化参数</h3>
<pre><code class="language-python">width = 20
precision = 2
num = 3.14159
print(f"Pi: '{num:^{width}.{precision}f}'")
# 输出: Pi: '      3.14      '
</code></pre>
<h3 id="表格对齐">表格对齐</h3>
<pre><code class="language-python">print(f"{'ID':&lt;5} {'Name':&lt;10} {'Score':&gt;6}")
print(f"1   {'Alice'}   {85.5:&gt;6.2f}")
print(f"2   {'Bob'}       {92.0:&gt;6.2f}")
# 输出:
# ID    Name      Score
# 1   Alice       85.50
# 2   Bob         92.00
</code></pre>
<h3 id="自记录表达式调试输出">自记录表达式(调试输出)</h3>
<p><code>f-string</code> 支持在花括号内使用 <code>=</code> 符号来输出表达式及其结果,这在调试时非常有用:</p>
<pre><code class="language-python">a, b = 10, 5
print(f"{a = }")# 输出: a = 10
print(f"{a + b = }")# 输出: a + b = 15
print(f"{a * b = }")# 输出: a * b = 50
print(f"{bool(a) = }")# 输出: bool(a) = True
</code></pre>
<h2 id="与其他格式化方法的对比">与其他格式化方法的对比</h2>
<table>
<thead>
<tr>
<th>方法</th>
<th>优点</th>
<th>缺点</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>%</code> 格式化</td>
<td>语法简单</td>
<td>可读性差,不支持复杂格式化</td>
</tr>
<tr>
<td><code>str.format()</code></td>
<td>灵活性高</td>
<td>代码冗长</td>
</tr>
<tr>
<td><code>f-string</code></td>
<td>简洁、高效、可读性强</td>
<td>需 Python 3.6+</td>
</tr>
</tbody>
</table><br><br>
来源:https://www.cnblogs.com/zhanggaoxing/p/18897086
頁: [1]
查看完整版本: 🚀 Python f-string 全攻略:从入门到大师,让你的编码效率翻倍!