您现在的位置是:亿华云 > 应用开发
Python 3特色用法:新特性汇总
亿华云2025-10-09 03:39:40【应用开发】4人已围观
简介这篇文章灵感来源于一个新项目A short guide on features of Python 3 for data scientists,这个项目列出来了作者使用Python 3用到的一些特性。
这篇文章灵感来源于一个新项目 A short guide on 特色features of Python 3 for data scientists,这个项目列出来了作者使用Python 3用到的用法一些特性。正巧我最近也想写一篇介绍Python 3(特指Python 3.6+)特色用法的新特性汇文章。开始吧!特色
pathlib模块
pathlib模块是用法Python 3新增的模块,让你更方便的新特性汇处理路径相关的工作。
In : from pathlib import Path In : Path.home() Out: PosixPath(/Users/dongweiming) # 用户目录 In : path = Path(/user) In : path / local # 非常直观 Out: PosixPath(/user/local) In : str(path / local / bin) Out: /user/local/bin In : f = Path(example.txt) In : f.write_bytes(This is the content.encode(utf-8)) Out[16]: 19 In : with f.open(r,特色 encoding=utf-8) as handle: # open现在是云服务器方法了 ....: print(read from open(): { !r}.format(handle.read())) ....: read from open(): This is the content In : p = Path(touched) In : p.exists() # 集成了多个常用方法 Out: False In : p.touch() In : p.exists() Out: True In : p.with_suffix(.jpg) Out: PosixPath(touched.jpg) In : p.is_dir() Out: False In : p.joinpath(a, b) Out: PosixPath(touched/a/b)可迭代对象的解包
In : a, b, *rest = range(10) # 学过lisp就很好懂了,相当于一个「everything else」 In : a Out: 0 In : b Out: 1 In : rest Out: [2,用法 3, 4, 5, 6, 7, 8, 9] In : *prev, next_to_last, last = range(10) In : prev, next_to_last, last Out: ([0, 1, 2, 3, 4, 5, 6, 7], 8, 9)强制关键字参数
使用强制关键字参数会比使用位置参数表意更加清晰,程序也更加具有可读性,新特性汇那么可以让这些参数强制使用关键字参数传递,特色可以将强制关键字参数放到某个 参数或者单个 后面就能达到这种效果:
In : def recv(maxsize,用法 *, block): ....: ....: pass ....: In : recv(1024, True) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-49-8e61db2ef94b> in <module>() ----> 1 recv(1024, True) TypeError: recv() takes 1 positional argument but 2 were given In : recv(1024, block=True)通配符**
我们都知道在Python 2时不能直接通配递归的目录,需要这样:
found_images = \ glob.glob(/path/*.jpg) \ + glob.glob(/path/*/*.jpg) \ + glob.glob(/path/*/*/*.jpg) \ + glob.glob(/path/*/*/*/*.jpg) \ + glob.glob(/path/*/*/*/*/*.jpg)Python3的新特性汇写法要清爽的多:
found_images = glob.glob(/path/**/*.jpg, recursive=True)事实上更好的用法是使用pathlib:
found_images = pathlib.Path(/path/).glob(**/*.jpg)Python 3之后print成为了函数,b2b信息网有了更多的特色扩展能力:
In : print(*[1, 2, 3], sep=\t) 1 2 3 In : [x if x % 3 else print(, x) for x in range(10)] 0 3 6 9 Out: [None, 1, 2, None, 4, 5, None, 7, 8, None]格式化字符串变量
In : name = Fred In : fMy name is { name} Out: My name is Fred In : from datetime import * In : date = datetime.now().date() In : f{ date} was on a { date:%A} Out: 2018-01-17 was on a Wednesday In : def foo(): ....: return 20 ....: In : fresult={ foo()} Out: result=20更严格的对比规范
下面这几种类型的用法在Python 3都是非法的:
3 < 3 2 < None (3, 4) < (3, None) (4, 5) < [4, 5] sorted([2, 1, 3])统一unicode的使用
这是很多人黑Python 2的一点,举个例子。用法在Python 2里面下面的新特性汇结果很奇怪:
In : s = 您好 In : print(len(s)) 6 In : print(s[:2]) ?Python 3就方便了:
In : s = 您好 In : print(len(s)) 2 In : print(s[:2]) 您好合并字典
In : x = dict(a=1, b=2) In : y = dict(b=3, d=4) In : z = { **x, **y} In : z Out: { a: 1, b: 3, d: 4}字典可排序
Python 3不再需要直接使用OrderedDict:
In : { str(i):i for i in range(5)} Out: { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4} 源码下载很赞哦!(22)
相关文章
- ④注册门槛低
- 618备战运营大屏建设—跨时区多源架构实践之路
- 如何选择域名新后缀?有什么技巧?
- 域名命名的规则是什么?新手注册域名时该怎么命名?
- 用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
- xyz域名怎么样?xyz域名怎么注册?
- 域名命名的规则是什么?新手注册域名时该怎么命名?
- 面试官:有了解过Synchronized吗 说说看
- 4.域名的整体品牌营销力
- .net.cn是什么域名?.net.cn在域名圈咋样?