使用 bisect 优化范围类分支判断
1 | def rank(rating): |
要优化这段代码,我们得把所有分界点收集起来,放在一个元组里。因为 breakpoints 已经是一个排好序的元组,所以我们可以直接使用 bisect 模块来实现查找功能:
1 | import bisect |
1 | def rank(rating): |
要优化这段代码,我们得把所有分界点收集起来,放在一个元组里。因为 breakpoints 已经是一个排好序的元组,所以我们可以直接使用 bisect 模块来实现查找功能:
1 | import bisect |
掌握如何写出好的条件分支代码非常重要,它可以帮助我们用更简洁、更清晰的代码来表达复杂逻辑。
当某个对象作为主角出现在 if 分支里时,解释器会主动对它进行真值测试,也就是调用 bool() 函数获取它的布尔值:
1 | >>> bool([]), bool([1, 2, 3]) |
不要因为过度追求简写而引入其他逻辑问题:
1 | # 更精准:只有为 0 的时候,才会满足分支条件 |
Python 之禅:
1 | >>> import this |
当我们看到一段代码时,最先注意到的,不是代码有几层循环,用了什么模式,而是变量与注释,因为它们是代码里最接近自然语言的东西,最容易被大脑消化、理解。
Python 支持灵活的动态解包语法,只要用星号表达式(*variables)作为变量名,它便会贪婪地捕获多个值对象,并将捕获到的内容作为列表赋值给 variables:
1 | >>> data = ['ethan', 'apple', 'orange', 'banana', 100] |
在 Python 交互式命令行里,_ 变量还有一层特殊含义——默认保存我们输入的上个表达式的返回值:
1 | >>> 'foo'.upper() |
剖析 Linux 容器的核心实现原理:
在开始实践之前,你需要准备一台 Linux 机器,并安装 Docker。这一次,我要用 Docker 部署一个用 Python 编写的 Web 应用。这个应用的代码部分(app.py)非常简单:
1 | from flask import Flask |