python具有可扩展的特性_python3 新特性

1、格式化字符串f-string

user = "Mike"log_message= f'User{user} has logged in'

2、路径管理库Pathlib

3、类型提示Type hinting

def sentence_has_animal(sentence:str) ->bool:return "animal" in sentence

4、枚举类enum

from enum importEnum, auto, unique

@unique#装饰器去重复

classmonster(Enum):

zombie=auto()

warrior=auto()

bear= auto()

5、itertools模块

无限迭代器代码如下:

1

2

3

4

迭代器 参数 结果 例子

count() start, [step] start, start+step, start+2*step, ... count(10)-->10 11 12 13 14 ...

cycle() p p0, p1, ... plast, p0, p1, ... cycle('ABCD')--> A B C D A B C D ...

repeat() elem [,n] elem, elem, elem, ... endlesslyor up to n times repeat(10,3)-->10 10 10

处理输入序列迭代器代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

迭代器 参数 结果 例子

chain() p, q, ... p0, p1, ... plast, q0, q1, ... chain('ABC','DEF')--> A B C D E F

compress() data, selectors (d[0]if s[0]), (d[1]if s[1]), ... compress('ABCDEF', [1,0,1,0,1,1])--> A C E F

dropwhile() pred, seq seq[n], seq[n+1], starting when pred fails dropwhile(lambda x: x<5, [1,4,6,4,1])-->6 4 1

groupby() iterable[, keyfunc] sub-iterators grouped by value of keyfunc(v)

ifilter() pred, seq elements of seq where pred(elem)is True ifilter(lambda x: x%2,range(10))-->1 3 5 7 9

ifilterfalse() pred, seq elements of seq where pred(elem)is False ifilterfalse(lambda x: x%2,range(10))-->0 2 4 6 8

islice() seq, [start,] stop [, step] elementsfrom seq[start:stop:step] islice('ABCDEFG',2,None)--> C D E F G

imap() func, p, q, ... func(p0, q0), func(p1, q1), ... imap(pow, (2,3,10), (5,2,3))-->32 9 1000

starmap() func, seq func(*seq[0]), func(*seq[1]), ... starmap(pow, [(2,5), (3,2), (10,3)])-->32 9 1000

tee() it, n it1, it2 , ... itn splits one iterator into n

takewhile() pred, seq seq[0], seq[1], until pred fails takewhile(lambda x: x<5, [1,4,6,4,1])-->1 4

izip() p, q, ... (p[0], q[0]), (p[1], q[1]), ... izip('ABCD','xy')--> Ax By

izip_longest() p, q, ... (p[0], q[0]), (p[1], q[1]), ... izip_longest('ABCD','xy', fillvalue='-')--> Ax By C- D-

组合生成器代码如下:

1

2

3

4

5

6

7

8

9

迭代器 参数 结果

product() p, q, ... [repeat=1] cartesian product, equivalent to a nestedfor-loop

permutations() p[, r] r-length tuples,all possible orderings, no repeated elements

combinations() p, r r-length tuples,in sorted order, no repeated elements

combinations_with_replacement() p, r r-length tuples,in sorted order, with repeated elements

product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD

permutations('ABCD',2) AB AC AD BA BC BD CA CB CD DA DB DC

combinations('ABCD',2) AB AC AD BC BD CD

combinations_with_replacement('ABCD',2) AA AB AC AD BB BC BD CC CD DD

6、LRU缓存,memoization技术

from functools importlru_cache

@lru_cache(maxsize=512)def fib_memoization(number:int) ->int:if number ==0 : return0if number ==1 : return 1

return fib_memoization(number - 1)

start=time.time()

fib_memoization(40)print(f'Duration:{time.time() - start}s')

7、可扩展的可迭代对象解包

head, *bodey, tail = range(5) #0, [1,2,3], 4

8、Data class装饰器,用来减少对样板代码的使用,该装饰器会自动生成__init()__和__repr()__方法。

classArmor:def __init__(self, armor:float, description:str, level:int = 1):

self.armor=armor

self.level=level

self.description=descriptiondef power(self) ->float:return self.armor *self.level

armor= Armor(5.2, "common armor.", 2)

armor.power()#10.4

###使用Data Class实现相同的Armor类

from dataclasses importdataclass

@dataclassclassArmor:

armor : float

description : str

level : int= 1

def power(self) ->float:return self.armor *self.level

armor= Armor(5.2, "common armor.", 2)

armor.power()

9、bisect模块保持列表排序:

这是一个免费的二分查找实现和快速插入有序序列的工具。也就是说,你可以使用:

importbisect

bisect.insort(list, element)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值