Python3.6中引入了一种新的字符串格式化的机制,为Literal String Interpolation(即字符串的插值),或者是一种更为通俗的名称,为F-Strings,因为该字符串格式化是以 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-Strings 如何进行字符串的格式化呢?是非常简单直观的:
_fstring = f'{one},{two}'
这会使得代码更为简洁,执行效率也会更高。对于执行效率,感兴趣的同学可以运用timeit模块比较一下这几种字符串格式化方法的执行时间。
F-Strings更流行的一个原因是在格式化的时候非常直观,即使不了解Python的关键字也可以非常好的看懂代码。在前面4种格式化,需要了解format, join,str,%等函数或者操作符。这在进行运算时也有所体现:
_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!
最后,来看一下一个简单的应用。在Web工程中,通常会记录两种流水日志,一种是此Web服务调用外部接口的日志,称为外部流水日志;另外一种是调用此Web服务的流水日志,称为内部流水日志。通常流水日志是一天记录一张表,那么生成流水日志的表名可以通过F-Strings来实现:
def makelogtablename(type, date): """ 生成记录流水日志的表名 :param type: 内部流水inport; 外部流水outport :param date: 日期 :return: """ return f'log_{type}_detail_{date}'
非常简洁。调用的时候仅仅需要如下调用:
makelogtablename("inport","20170904")
允许的结果为log_inport_detail_20170904。
你发现F-Strings的简洁之处了吗?快快打开Pycharm尝试一番吧。
Python学习群:593088321