Python3.6里新特性,你竟然不知道!

浏览: 1730

阅读本文大概需要3分钟


菜鸟独白

Python3.6 不知道有多少同学用了,里面推出了很多新的特性,有关于语法的,有标准库的,有关于安全的!其中有一条是关于字符串的格式化处理。这新的招用法非常简洁,优雅,我们一起来看一下Pythonic的!

1.传统玩法

Python里面的字符串用法相信很多同学都知道,我们简单回顾一下:

1).用%来格式化

print ('Hello:%s'%('leo'))

如果要格式化多的话,需要多敲几个%s 

print ('Hello: %s, Your height is:%s'%('leo',170))

但是%非常麻烦,而且不够灵活!于是Python里面推荐用下面的format方法

2).format来格式化

print ('Hello:{}'.format('leo'))
print ('Hello: {}, Your height is:{}'.format('leo',170))
print ('Hello: {1}, Your height is:{0}'.format(170,'leo'))

可以看的出format非常灵活,功能甩%好几条街,前面的Python入门基础文章我有详细介绍(【秘籍总结】玩转Python里的字符串|上篇).

下面我们重点看看新特性!

但是功力虽强,也有烦恼!比如下面的程序:

当然你可以放在一个字典里面:

person = {'name': 'leo', 'age': 30}
print ("Hello, {name}. You are {age}.".format(**person))

但是当你有一堆的数据要格式化,这样输入非常麻烦,而且费事!有没有好的办法呢!我们来看新玩法!

2.Python3里的新玩法

1).Py3.6里面增加了一种超级简单的玩法

简单到什么程度呢,即在普通字符串前添加 f 或 F 前缀,其效果类似于str.format()。比如

name = "Leo"
print (f"Hello {name}")
>>Hello Leo

当然写的大写的F也可以!是不是眼前一亮,哇这样简单!不仅如此,还有更好玩的!

2).函数里的玩法

函数返回的内容也可以格式化

3).类里的玩法

__str__和__repr__两个都是魔法函数,这个我前面讲过的!一个是print的时候输出,一个是在解释器上输出!

4).多行的f-string

如果对于多行的字符串的格式化,一样非常简单!

当然稍微麻烦一点就是需要再每一行前面加一个f。如果只加一个f会报错!

3.为啥要引入f呢

看完上面的内容,是不是觉得不就是少敲几个字符吗!Py3.6用的着专门引用这个特性吗?Too youny,too simple !当然不是,f的特性除了简洁,漂亮之外!还有一个重要的原因,速度快!

f-string要比%和str.fomat()快很多,不信我用timeit计算一下:

1).看一下普通的%运行的时间:

import timeit
print (timeit.timeit("""'Hi %s,age is %s'%('leo',30)""", number = 10000))

>>

0.00024311599918291904

2).看一下format运行的时间

import timeit
print (timeit.timeit("""'Hi {},age is :{}'.format('leo',30)""", number = 10000))

>>

0.006145652001578128

format运行的时间,要比%s多近25倍的时间!真够慢的!

3).看一下f-string的运行时间

import timeit
print (timeit.timeit("""f'{"leo"} is {30}.'""", number = 10000))

>>

0.004178790000878507

f-string比format节省了近33%的时间,而简洁和优雅要甩format好几条街。

发现Python真的是懒人专用的语言,能简洁的地方尽量简洁。让我又想起来Python的经典语录,不信你输入import this ,看看Python的九阴真经:

从现在开始,拥抱f-string吧!

推荐 1
本文由 菜鸟学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册