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

Python的f-string使用技巧

 更新時間:2024年01月29日 09:51:17   作者:python慕遙  
Python很早就引入了一種稱為 f-string 的字符串格式化方法,它代表格式化字符串字面值,本文主要介紹了Python的f-string使用技巧,具有一定的參考價值,感興趣的可以了解一下

Python很早就引入了一種稱為 f-string 的字符串格式化方法,它代表格式化字符串字面值。多年過去了,f-string 也成為了python 中應(yīng)用最廣泛的字符串格式化方法。這比其他字符串格式化方法更快,更易讀、易用,下面將介紹相關(guān)使用技巧。

1. 調(diào)試模式

首先就是 f-string 的調(diào)試功能,這可以讓我們使用{variable = }代替編寫"variable = ",如下面代碼所示。這樣可以節(jié)省大量時間和精力,并使代碼看起來更整潔。

在 f-string 的調(diào)試中,還可以執(zhí)行數(shù)學(xué)運(yùn)算,就像在最后一行中看到的那樣。

x = 10
y = 20

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

# math operations
print(f"{x * y = }")

輸出:

x = 10, y = 20
x = 10, y = 20
x * y = 200

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

2.格式化數(shù)字

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

  • 設(shè)置小數(shù)位數(shù)(精度):使用:.nf,其中n是小數(shù)位數(shù)

  • 十六進(jìn)制轉(zhuǎn)換

  • 二進(jìn)制轉(zhuǎn)換

  • 八進(jìn)制轉(zhuǎn)換

  • 科學(xué)計數(shù)法

  • 使用前導(dǎo)零填充數(shù)字:使用:0n,其中n是總字符數(shù)

number = 420

# decimal places
# 設(shè)置精度
print(f"number: {number:.2f}")

# hex conversion
# 十六進(jìn)制轉(zhuǎn)換
print(f"hex: {number:#0x}")

# binary conversion
# 二進(jìn)制轉(zhuǎn)換
print(f"binary: {number:b}")

# octal conversion
# 八進(jìn)制轉(zhuǎn)換
print(f"octal: {number:o}")

# scientific notation
# 科學(xué)計數(shù)法
print(f"scientific: {number:e}") 

# total number of characters
# 填充前導(dǎo)0
print(f"Number: {number:09}") 

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

假設(shè)有一個像蘋果市值那樣大的數(shù)字,你可以使用:,,這里的逗號,就是分隔符?;蛘呦胱?f-string 打印出一個百分比值,可以使用:.2%告訴 Python 設(shè)置 2 位小數(shù)并在字符串末尾添加一個百分號。

apple_marketcap = 2.626 * 10e12

print(f"{apple_marketcap = :,}") # comma separator

percentage = 10.394394

print(f"{percentage = :.2%}") # percentage

輸出:

apple_marketcap = 26,260,000,000,000.0
percentage = 1039.44%

3.日期格式化

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

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

  • 沒有微秒

  • 僅日期

  • 僅時間

  • 帶上午/下午的時間

  • 24 小時格式

import datetime

today = datetime.datetime.utcnow()
print(f"datetime : {today}\n")

print(f"date time: {today:%m/%d/%Y %H:%M:%S}") # 沒有微秒
print(f"date: {today:%m/%d/%Y}") # 僅日期
print(f"time: {today:%H:%M:%S.%f}") # 僅時間
print(f"time: {today:%H:%M:%S %p}") # 時間帶上上午/下午
print(f"time: {today:%H:%M}") # 24小時制時間

輸出:

datetime : 2022-09-13 05:44:17.546036
 
date time: 09/13/2022 05:44:17
date: 09/13/2022
time: 05:44:17.546036
time: 05:44:17 AM
time: 05:44

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

# Locale's appropriate date and time representation
print(f"locale appropriate: {today:%c}")

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

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

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

輸出:

locale appropriate: Tue Sep 13 05:44:17 2022
weekday: Tuesday
day of year: 256
progress % year: 70.14%

4.對齊

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

number = 4
print(f"number is {number:4}") # width of 10

# numbers
for number in range(1, 5):
    print(f"the number is {number:{number}}")

left = "left text"
center = "center text!"
right = "right text"

print(f"{left:>20}") # left align
print(f"{center:^20}") # center align
print(f"{right:<20}") # right align

print(f"{left : <20}{center : ^20}{right : >20}")

輸出:

number is    4
the number is 1
the number is  2
the number is   3
the number is    4
           left text
   center text!    
right text          
left text               center text!              right text

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

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

center:^20中,打印結(jié)果共占用 20 字符,且字符串位于中間。由于字符串 "center text!" 有 12 個字符,左右兩側(cè)各填充 4 個空白字符。

如果將三個字符串及其格式化選項放在一起,將有一個寬度為60的空間來放置左、中、右字符串變量。

5.f-string中引號使用存在的問題

① f-string大括號內(nèi)使用的引號不能和大括號外的引號定界符引號沖突,需根據(jù)情況靈活切換使用單引號、雙引號、單三引號、雙三引號。

>>> f'I am {"Huang Wei"}'
'I am Huang Wei'

>>> f'''I am {'Huang Wei'}'''
'I am Huang Wei'

>>> f"""I am {'Huang Wei'}"""
'I am Huang Wei'

>>> f"""I am {"Huang Wei"}"""
'I am Huang Wei'

>>> f'I am {'Huang Wei'}'
  File "<stdin>", line 1
    f'I am {'Huang Wei'}'
                 ^
SyntaxError: invalid syntax

注意:只要大括號內(nèi)外的引號不同,就沒有問題。但是大括號中只能是但引號和 雙引號 ,大括號外的引號定界符引號可以使用單引號、雙引號、單三引號、雙三引號。

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

>>> f"he\'ll go to {'shang hai'}"
"he'll go to shang hai"

>>> f"""he introduces himself {"I\'m Tom"}"""
  File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash

>>> f"""he introduces himself {"I'm Tom"}"""
"he introduces himself I'm Tom"

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

① f-string大括號外如果需要顯示大括號,則應(yīng)輸入連續(xù)兩個大括號{{ }};大括號內(nèi)需要引號,使用引號即可。

>>> f"5{'{apples}'}"
'5{apples}'

>>> f"{{5}}{'apples'}"
'{5}apples'

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

相關(guān)文章

最新評論