Python中有趣的F-Strings

428 阅读2分钟

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