由于Python的版本更迭,很多人将自己的Python版本从2换成了3。这两个版本中,有一个非常出名的改变之一是:Python2中的print函数被Python3中的print()函数所代替。但是,如果在print关键字之后添加空格,则括号会在Python2中起作用,因为解释器会将其视为表达式。下面,我介绍一些令人吃惊的功能,这些功能只有在Python3中才能找到。
以下所有示例均使用进行编码,并且对于该算法,每个功能都涉及最低要求的Python版本我都标注出来了,觉得有用的同学请自觉收藏!
没有字符串的任何编程语言,都很难运行起来。可能你希望使用结构化的方法来处理字符串以保持高效,但是大多数使用Python的人更喜欢使用format方法。
user=“Amritansh”action=“coding”log_message=‘User{}hasloggedinanddidanaction{}.’.format(user,action)print(log_message)用户Amritansh已登录并执行了操作编码
2.Pathlib(3.4+)f字符串是难以置信的,但是像文件路径这样的字符串有自己的库,那就可以更容易地操作它们了。作为处理文件路径的方便抽象,Python3提供了pathlib。
frompathlibimportPathroot=Path(‘post_sub_folder’)print(root)使路径绝对化print(())True4.枚举(3.4+)
Python3提供了一种简单的方法来在Enum类中编写枚举。枚举是封装常量列表的有用方法,因此在没有太多结构的情况下,它们不会在代码中随机出现。
fromenumimportEnum,autoclassMonster(Enum):ZOMBIE=auto()WARRIOR=auto()BEAR=auto()print()5.内置LRU缓存(3.2+)
我们今天使用的软件和硬件,基本上每个水平切片中,都存在缓存。python3通过将LRU(最近已经很少使用)缓存作为一个称为LRUcache的装饰器,使其使用变得非常简单。
从缓存中受益的有基本的Fibonacci函数,因其在递归过程中,多次执行相同的任务。
importtimedeffib(number:int)-int:ifnumber==0:return0ifnumber==1:return1returnfib(number-1)+fib(number-2)start=()fib(40)print(f’Duration:{()—start}s’)持续时间:6.866455078125e-05s
6.扩展的iterable拆包(3.0+)官方文档在这里:
head,*body,tail=range(5)print(head,body,tail)[‘-n’,‘5’,‘-l’,‘15’]first,_,third,*_=range(10)print(first,third)10.4print(armor)10.4print(armor)Cost:10000hex_flag=0xDAFE_FFF8print(f’Hexflag:{hex_flag}’)Binary:57
通过使数字成为下划线来提供一种允许读取数字文字的绝佳方法。例如,它可以用于演示:千位、十六进制和二进制数。
在Python的最新版本中,引入了walrus运算符,它能够对表达式进行变量赋值。如果你想在代码中引用表达式,并在代码中保存一两行代码,那么它会非常有用。
animals=[‘dog’,‘lion’,‘bear’,‘tiger’]foranimalinanimals:if(len_animal:=len(animal))4:print(f’Theanimal“{animal}”has“{len_animal}”,letters!’)#Theanimal“tiger”has“5”,letters!
总结--END--
喜欢本文的同学记得转发+点赞~
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。