编程大神进阶之路:Python能力小贴士
副问题[/!--empirenews.page--]
先容 Python 炫酷成果(譬喻,变量解包,偏函数,列举可迭代工具等)的文章层出不穷。可是尚有许多 Python 的编程小能力鲜被说起。因此,本文会试着先容一些其余文章没有提到的小能力,这些小能力也是我平常会用到的的。让我们一探毕竟吧! 清算字符串输入 清算用户输入的题目在编程进程中极为常见。凡是环境下,将字符转换为小写或大写就够了,偶然你可以行使正则表达式模块「Regex」完成这项事变。可是假如题目很伟大,也许有更好的要领来办理:
在本例中,你可以看到空格符「 n」和「 t」都被替代成了单个空格,「 r」都被删掉了。这只是个很简朴的例子,我们可以更进一步,行使「unicodedata」措施包天生大型重映射表,并行使个中的「combining()」举办天生和映射,我们可以 迭代器切片(Slice) 假如对迭代器举办切片操纵,会返回一个「TypeError」,提醒天生器工具没有下标,可是我们可以用一个简朴的方案来办理这个题目:
我们可以行使「itertools.islice」建设一个「islice」工具,该工具是一个迭代器,可以发生我们想要的项。但必要留意的是,该操纵要行使切片之前的全部天生器项,以及「islice」工具中的全部项。 跳过可迭代工具的开头 偶然你要处理赏罚一些以不必要的行(如注释)开头的文件。「itertools」再次提供了一种简朴的办理方案:
这段代码只打印初始注释部门之后的内容。假如我们只想舍弃可迭代工具的开头部门(本示例中为开头的注释行),而又不知道要这部门有多长时,这种要领就很有效了。 只包括要害字参数的函数 (kwargs) 当我们行使下面的函数时,建设仅仅必要要害字参数作为输入的函数来提供更清楚的函数界说,会很有辅佐:
如你所见,在要害字参数之前加上一个「*」就可以办理这个题目。假如我们将某些参数放在「*」参数之前,它们显然是位置参数。 建设支持「with」语句的工具 举例而言,我们都知道怎样行使「with」语句打开文件或获取锁,可是我们可以实现本身上下文表达式吗?是的,我们可以行使「__enter__」和「__exit__」来实现上下文打点协议:
这是在 Python 中最常见的实现上下文打点的要领,可是尚有更简朴的要领:
上面这段代码行使 contextmanager 的 manager 装饰器实现了内容打点协议。在进入 with 块时 tag 函数的第一部门(在 yield 之前的部门)就已经执行了,然后 with 块才被执行,最后执行 tag 函数的别的部门。 用「__slots__」节减内存 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |