Python3.6中引入了一種新的字符串格式化的機(jī)制,為Literal String Interpolation(即字符串的插值),或者是一種更為通俗的名稱,為F-Strings,因?yàn)樵撟址袷交且?f 開頭的。
可以先看一下之前所擁有的字符串格式化的處理方式:
one, two = 1, 2_format = '{},{}'.format(one, two)_percent = '%s,%s' % (one, two)_concatenation = str(one) + ',' + str(two)_join = ','.join((str(one),str(two)))
這四種都是字符串常用的格式化方式侨颈。那么,F(xiàn)-Strings 如何進(jìn)行字符串的格式化呢芯义?是非常簡單直觀的:
_fstring = f'{one},{two}'
這會使得代碼更為簡潔哈垢,執(zhí)行效率也會更高。對于執(zhí)行效率扛拨,感興趣的同學(xué)可以運(yùn)用timeit模塊比較一下這幾種字符串格式化方法的執(zhí)行時(shí)間耘分。
F-Strings更流行的一個原因是在格式化的時(shí)候非常直觀,即使不了解Python的關(guān)鍵字也可以非常好的看懂代碼绑警。在前面4種格式化求泰,需要了解format, join计盒,str主守,%等函數(shù)或者操作符珊搀。這在進(jìn)行運(yùn)算時(shí)也有所體現(xiàn):
_fstring = f'Total: {one + two}' ?# Go f-string!_format = 'Total: {}'.format(one + two)_percent = 'Total: %s' % (one + two)_concatenation = 'Total: ' + str(one + two)
最簡單最Pythonic的代碼還是F-Strings褥赊!
最后蝌麸,來看一下一個簡單的應(yīng)用。在Web工程中咕村,通常會記錄兩種流水日志场钉,一種是此Web服務(wù)調(diào)用外部接口的日志,稱為外部流水日志懈涛;另外一種是調(diào)用此Web服務(wù)的流水日志逛万,稱為內(nèi)部流水日志。通常流水日志是一天記錄一張表批钠,那么生成流水日志的表名可以通過F-Strings來實(shí)現(xiàn):
def makelogtablename(type, date):?? ?"""?? ?生成記錄流水日志的表名?? ?:param type: 內(nèi)部流水inport; 外部流水outport?? ?:param date: 日期?? ?:return:?? ?"""?? ?return f'log_{type}_detail_{date}'
非常簡潔宇植。調(diào)用的時(shí)候僅僅需要如下調(diào)用:
makelogtablename("inport","20170904")
允許的結(jié)果為log_inport_detail_20170904得封。
你發(fā)現(xiàn)F-Strings的簡潔之處了嗎?快快打開Pycharm嘗試一番吧当纱。
Python學(xué)習(xí)群:593088321