6 f strings tips
title: 6个Python f-strings的技巧和诀窍 type: story language: python tags: [字符串] cover: sea-view excerpt: Python的f-strings比传统的字符串格式化提供了更易读、更简洁和更不容易出错的方式。它们包含了许多有用的功能,在日常使用中一定会派上用场。让我们来看看其中的一些。
字符串插值
迄今为止,最常用的f-string功能是字符串插值。你只需要将值或变量放在花括号({}
)中,就可以了。
str_val = '苹果'
num_val = 42
print(f'{num_val} {str_val}') # 42 苹果
变量名
除了获取变量的值,你还可以在值旁边获取它的名称。这在调试时特别有用,可以通过在花括号内的变量名后面添加等号(=
)来轻松实现。
请注意,花括号内的空格会被考虑在内,因此在等号周围添加空格可以使结果更易读。
str_val = '苹果'
num_val = 42
```py
num_val = 42
print(f'{num_val:0>5}') # 00042
Float formatting
You can also format floating-point numbers using f-strings. The syntax is similar to the one used with the format()
method. You can specify the number of decimal places, the minimum width, and the alignment.
float_val = 3.14159
print(f'{float_val:.2f}') # 3.14
Date formatting
f-strings also support date formatting using the same syntax as the strftime()
method. You can specify the format codes inside the curly braces.
import datetime
date_val = datetime.datetime.now()
print(f'{date_val:%Y-%m-%d}') # 2022-01-01
Conditional expressions
You can use conditional expressions inside f-strings to conditionally include values. The syntax is similar to the ternary operator.
num_val = 42
print(f'{num_val} is {"even" if num_val % 2 == 0 else "odd"}') # 42 is even
Attribute access
You can also access attributes of objects inside f-strings using the dot notation.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person('Alice', 25)
print(f'{person.name} is {person.age} years old') # Alice is 25 years old
Function calls
You can call functions inside f-strings by placing the function call inside the curly braces.
def double(num):
return num * 2
num_val = 42
print(f'{num_val} doubled is {double(num_val)}') # 42 doubled is 84
此外,f-strings也可以用于格式化 - 因此名称中有f。要为值添加格式,可以添加一个冒号(:
),后面跟着一个格式说明符。如果您还想打印变量的名称,也可以与之前的等号结合使用。
数字是一个很好的候选对象。例如,如果您想将数值截断为小数点后两位,可以使用.2f
格式说明符。
price_val = 6.12658
print(f'{price_val:.2f}') # 6.13
日期格式化
最后,日期也可以使用格式说明符以与数字相同的方式进行格式化。通常,%Y
表示完整的年份,%m
表示月份,%d
表示月份中的日期。
from datetime import datetime;
date_val = datetime.utcnow()
print(f'{date_val=:%Y-%m-%d}') # date_val=2021-07-09