欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中f-string的基本用法

 更新時間:2024年12月03日 10:56:03   作者:五月天的尾巴  
f-string是Python3.6及以上版本中新增的一種格式化字符串方式,本文就來介紹了python中f-string的基本用法,具有一定的參考價值,感興趣的可以了解一下

Python 中的print 函數(shù)是很常用的一個函數(shù),可以用來輸出信息。而print(f)是Python 3.6版本以后新增的一種格式化輸出方式,也被稱為f-string。

在Python中,print(f'') 是格式化字符串(f-string)的語法,它允許你在字符串中嵌入表達式,這些表達式在運行時會被其值所替換。f 或 F 前綴表示這是一個格式化字符串字面量。

在 f’’ 或 F’’ 中的大括號 {} 內(nèi),你可以放入任何有效的Python表達式。當 print 函數(shù)執(zhí)行時,這些表達式會被求值,并且其結(jié)果會被插入到字符串的相應(yīng)位置。

想要了解更多則參考官方文檔

一、f-string 是什么?

在Python 3.6版本中,新增加一個格式化字符串輸出(f-string),即字符串前面加上字母f。使用f-string可以將變量值插入到字符串中,且表達式語法明顯、直觀。

二、f-string 的基本用法

f-string的基本格式是:

f'string {expression} string'

其中:花括號內(nèi)是表達式,表達式的值會被插入到字符串中。

下面是一個簡單的例子:

name = "Alice"
print(f"Hello, {name}!") # 輸出:Hello, Alice!

x = 5
y = 10
print(f"The sum of {x} and {y} is {x + y}.") # 輸出:The sum of 5 and 10 is 15.

在上面的例子中,用花括號把變量括起來,然后在花括號前面加上字母f。這樣,在字符串中用{}引用變量的時候,就會自動將變量解析出來。

三種格式化字符串方式的比較

name = 'tom'
age = '18'
# 方法一:
print(f'我是{name},今年{age}歲。')
# 方法二:
print('我是{},今年{}歲。'.format(name, age))
# 方法三:
print('我是%s,今年%s歲' % (name, age))

三、基本使用示例

例子 1:基本用法

name = "Alice"
print(f"Hello, {name}!") # 輸出:Hello, Alice!

例子 2:算術(shù)運算

x = 5
y = 10
print(f"The sum of {x} and {y} is {x + y}.") # 輸出:The sum of 5 and 10 is 15.

例子 3:訪問字典元素

person = {"name": "Bob", "age": 30}
print(f"{person['name']} is {person['age']} years old.") # 輸出:Bob is 30 years old.

例子 4:使用函數(shù)

def square(x):
        return x ** 2

number = 4
print(f"The square of {number} is {square(number)}.") # 輸出:The square of 4 is 16.

例子 5:格式化數(shù)字(一般可以用于保留浮點數(shù)的小數(shù)點后幾位。)

pi = 3.141592653589793
print(f"The value of pi is approximately {pi:.2f}.") # 輸出:The value of pi is approximately 3.14.

在上面的最后一個例子中,:.2f 是一個格式說明符,它告訴Python將浮點數(shù) pi 格式化為帶有兩位小數(shù)的字符串。

四、f-string 的高級用法

4.1、對齊

f-string 的 {} 中采用 content:format 的方式來設(shè)置字符串格式,如要使用默認格式,則可不必指定 :format。支持左對齊、右對齊、居中對齊。

如果你希望將變量打印在特定位置,可以使用對齊方式

4.1.1、默認使用空格填充

name = 'ready'
print(f'|{name:>20}|')  # 右對齊,填充字符串長度至20
# |               ready|
print(f'{name:<20}')  # 左對齊,填充字符串長度至20
# |ready               |
print(f'{name:^20}')  # 居中對齊,填充字符串長度至20
# |        ready       |

注意第一個 print 中的number:n。這里的n表示從“|” 開始打印變量number的寬度(包括數(shù)字本身的寬度),還可以選擇進行左對齊、居中對齊或右對齊。

在name:>20中,打印結(jié)果共占用 20 字符,字符串靠右打印,左側(cè)填充空格。

在name:^20中,打印結(jié)果共占用 20 字符,且字符串位于中間。

4.1.2、使用其他字符填充

name = 'ready'
print(f'{name:a>20}')
# aaaaaaaaaaaaaaaready
print(f'{name:1<20}')
# ready111111111111111
print(f'{name:-^20}')
# --------ready-------

4.2、調(diào)試模式

f-string 的調(diào)試模式,即使用 {variable = } 代替 variable = {},如下面代碼所示。

在 f-string 的調(diào)試中,還可以執(zhí)行數(shù)學運算,就像在下面示例中看到的那樣。

x = 10
y = 20
 
print(f"x = {x}, y = {y}") # 原方式
# x = 10, y = 20

print(f"{x = }, {y = }")   # 調(diào)試模式
# x = 10, y = 20

# 運算x*y的值
print(f"{x * y = }")
# x * y = 200

print(f"{x = :.3f}")
# x = 10.000

可以看到使用調(diào)試模式減少了代碼量,同時輸出的內(nèi)容是一致的。

此功能稱為“調(diào)試”,可以與其他修飾符結(jié)合使用。它還保留空格,因此f"{x = }“和f”{x=}"將產(chǎn)生不同的字符串。

4.3、變量名格式化

有時候,我們需要在字符串中使用變量名,而不是變量的值,這時可以使用!r!s。

比如下面這個例子:

name = "Tom" 
print(f"His name is {name!r}.") #輸出:His name is'Tom'

在上面的例子中,變量name的值是Tom,但是使用了!r后,輸出的是’Tom’,即字符串類型的值

4.4、表達式格式化

f-string 支持在花括號中使用表達式,從而處理一些復(fù)雜的邏輯。

比如下面這個例子:

name ="Tom"
age=20 
print(f"{'He' if age<18 else 'She'} is {name}.")#輸出:She is Tom.

在上面的例子中,使用if語句實現(xiàn)了根據(jù)年齡性別的判斷輸出。

4.5、格式化數(shù)字

可以用數(shù)字進行各種格式化/轉(zhuǎn)換,下面是一些示例:

  • 設(shè)置小數(shù)位數(shù)(精度):使用:.nf,其中n是小數(shù)位數(shù)
  • 十六進制轉(zhuǎn)換
  • 二進制轉(zhuǎn)換
  • 八進制轉(zhuǎn)換
  • 科學計數(shù)法
  • 使用前導零填充數(shù)字:使用:0n,其中n是總字符數(shù)
number = 420
 
# decimal places
# 設(shè)置精度
print(f"number: {number:.2f}")
 
# hex conversion
# 十六進制轉(zhuǎn)換
print(f"hex: {number:#0x}")
 
# binary conversion
# 二進制轉(zhuǎn)換
print(f"binary: {number:b}")
 
# octal conversion
# 八進制轉(zhuǎn)換
print(f"octal: {number:o}")
 
# scientific notation
# 科學計數(shù)法
print(f"scientific: {number:e}") 
 
# total number of characters
# 填充前導0
print(f"Number: {number:09}")

輸出

number: 420.00
hex: 0x1a4
binary: 110100100
octal: 644
scientific: 4.200000e+02
Number: 000000420

類型轉(zhuǎn)換標志符還有:d 整數(shù)、f 浮點數(shù)、g 根據(jù)值的大小選擇%f或%e、s 字符串

千位符分隔符、百分比

a = 1000000 
print(f"{a= :,}") 
# a= 1,000,000

per = 0.59596
print(f"{per = :.2%}")
# per = 59.60%

:.2% 告訴 Python 設(shè)置 2 位小數(shù)并在字符串末尾添加一個百分號。

4.6、日期格式化

如果想格式化日期,可以創(chuàng)建一個示例日期時間值。就像在應(yīng)用程序中格式化日期一樣,可以在 f-string 中定義你想要的格式,例如:<date_format>

下面將一個 UTC 日期時間格式化為:

  • 沒有微秒
  • 僅日期
  • 僅時間
  • 帶上午/下午的時間
  • 24 小時格式
import datetime

today = datetime.datetime.utcnow()
print(f"datetime : {today}")
# datetime : 2024-02-28 06:11:04.848944

print(f"date time: {today:%m/%d/%Y %H:%M:%S}") # 沒有微秒
# date time: 02/28/2024 06:11:04

print(f"date: {today:%m/%d/%Y}") # 僅日期
# date: 02/28/2024

print(f"time: {today:%H:%M:%S.%f}") # 僅時間
# time: 06:11:04.848944

print(f"time: {today:%H:%M:%S %p}") # 時間帶上上午/下午
# time: 06:11:04 AM

print(f"time: {today:%H:%M}") # 24小時制時間
# time: 06:11

還可以使用格式化選項做更多事情,下面是如何從日期中獲取星期幾和一年中的第幾天,還有計算已經(jīng)過了一年的多少天。

print(f"locale appropriate: {today:%c}") # 本地的適當日期和時間表示法
# locale appropriate: Wed Feb 28 06:13:35 2024

print(f"weekday: {today:%A}") # 獲取當前日期是星期幾
# weekday: Wednesday

print(f"day of year: {today:%j}") # 獲取當前日期是一年中的第幾天
# day of year: 059

day_of_year = f"{today:%j}" 
print(f"progress % year: {int(day_of_year)/365 * 100:.2f}%")# 獲取本年度已過去時間(百分比)
# progress % year: 16.16%

4.7、引號規(guī)范、轉(zhuǎn)義問題

1、f-string 中 {} 內(nèi)使用的引號不能與 {} 外的引號定界符沖突,即如下這樣的操作是不可以的:

print(f'My name is {'Li Hua'}')
# SyntaxError: f-string: expecting '}'

改為以下任何一種形式都能夠正常輸出(以下列舉了所有可能的情況):

""" 外部定界符是單引號 """
print(f'My name is {"Li Hua"}')
print(f'My name is {"""Li Hua"""}')

""" 外部定界符是雙引號 """
print(f"My name is {'Li Hua'}")
print(f"My name is {'''Li Hua'''}")

""" 外部定界符是雙三引號 """
print(f"""My name is {'Li Hua'}""")
print(f"""My name is {"Li Hua"}""")
print(f"""My name is {'''Li Hua'''}""")

""" 外部定界符是單三引號 """
print(f'''My name is {'Li Hua'}''')
print(f'''My name is {"Li Hua"}''')
print(f'''My name is {"""Li Hua"""}''')

總結(jié):如果字符串內(nèi)部可能會出現(xiàn)多種引號但又不想操心引號問題,外部定界符直接使用 """ 就行了。

2、大括號外的引號還可以使用\轉(zhuǎn)義,但大括號內(nèi)不能使用\轉(zhuǎn)義

print(f'I\'m{"小楊"}') # 輸出:I'm小楊
print(f'I\'m{"小楊"},{I\'m OK}')
#輸出
'''
print(f'I\'m{"小楊"},{I\'m OK}')
                                     ^
SyntaxError: f-string expression part cannot include a backslash
'''

如果確實需要在 {} 使用轉(zhuǎn)義,則應(yīng)當將包含 \ 的內(nèi)容單獨聲明為一個變量

s = '\''
print(f"{s}")
# '

4.8、f-string中大括號使用存在的問題

f-string大括號外如果需要顯示大括號,兩個大括號{{ }}就可以顯示了;大括號內(nèi)需要引號,使用引號即可(規(guī)則如第7條所述)。

print(f"給大家推薦一本書{{物種起源}}")
#輸出:給大家推薦一本書{物種起源}

到此這篇關(guān)于python中f-string的基本用法的文章就介紹到這了,更多相關(guān)python f-string內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論