中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中實現類f-string的方法是怎樣的

發布時間:2021-11-12 16:45:29 來源:億速云 閱讀:153 作者:柒染 欄目:大數據

python中實現類f-string的方法是怎樣的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

1. python中如何格式化字符串

python格式化化字符串有3種方法,分別是使用%,format, f-string, 從使用的便利性上講,是逐個提高的,尤其是f-string,大大簡化了字符串格式化代碼的編寫,下面的示例,是分別使用三種方式進行字符串格式化的操作示例

print("%s今年%d歲" % (name, age))
name = '李雷'
age = 14
print('{name}今年{age}歲'.format(name=name, age=age))
print(f'{name}今年{age}歲')

他們的格式化效果相同,最終結果都是

李雷今年14歲

使用f-string這種語法,顯然代碼更加簡潔,這激發了我的興趣,試一試,能否實現一個函數實現和f-string類似的效果。

我定義一個函數,并希望它能實現和f-string類似的效果

name = '李雷'
age = 14

def my_fstring(format_str):
   pass

string = my_fstring('{name}今年{age}歲')
print(string)   # 李雷今年14歲

2. 獲得需要填充格式化的字段名稱

想要實現上述的效果,首先,需要解析字符串,這里我使用正則表達式

import re

pattern = re.compile("{.*?}")

string = "{name}今年{age}歲"
result = pattern.findall(string)   # ['{name}', '{age}']
args = [item[1:-1] for item in result]  # ['name', 'age']

使用正則匹配,解析出字符串里有name和age需要被替換填充。

3. 獲得name與age的值

盡管已經知道字符串在格式化時需要替換填充name和age,但怎么獲取到這兩個字段對應的值呢?這里我想到的方法是獲取調用執行函數my_fstring時的frame, 通過frame的f_locals 來獲得name與age

def my_fstring(format_str):
   pattern = re.compile("{.*?}")
   result = pattern.findall(format_str)  # ['{name}', '{age}']
   args = [item[1:-1] for item in result]

   frame = sys._getframe()
   f_back_frame = frame.f_back
   value_dict = {key: f_back_frame.f_locals.get(key) for key in args}
   return format_str.format(**value_dict)

在函數內部,通過sys模塊,先獲得當前的frame,隨后通過f_back獲得上一層的frame,上一層的frame里的f_locals屬性就包含了name和age變量。最后,使用字符串的format方法對字符串進行格式化。

實現的my_fstring函數,還存在很多缺陷,不能代替,也沒有必要代替f-string, 但這一次的研究過程,讓我對python的函數調用有了更深入的理解和學習。

關于python中實現類f-string的方法是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

历史| 海口市| 鹤峰县| 马边| 鹤庆县| 剑川县| 钟祥市| 化德县| 旬阳县| 九江市| 微博| 海宁市| 和政县| 高青县| 铜川市| 凌海市| 凭祥市| 银川市| 密云县| 突泉县| 奉贤区| 扶沟县| 上饶市| 石城县| 乌拉特中旗| 进贤县| 永泰县| 馆陶县| 墨脱县| 蕉岭县| 灌云县| 莎车县| 吉安县| 中卫市| 福清市| 紫阳县| 上饶市| 阳东县| 延庆县| 黄浦区| 石首市|