这是一个来自我的Telegram频道@pythonetc的小贴士集锦:
0_0
0_0 是一个完全有效的Python表达式。
对含有None值的列表排序
对含有None值的列表进行排序是很有挑战性的:
你或许会尝试先移除None值,在排序之后再将它们添加进来(根据你的任务决定添加在列表的结尾还是开始):
这是一个傻瓜式的办法,好点的解决方法是使用更复杂一点的键:
对于不包含无穷大的类型,你可以通过对元组进行排序来代替:
调用random.seed()方法
当您fork您的进程时,你正在使用的随机种子正在跨进程复制。这可能导致不同线程产生相同的«random»结果。
为了避免这种情况,你必须在每个进程中手动调用random.seed()。
但是,如果你使用的是multiprocessing模块,情况就不是这样了,它会为你代劳。
举个例子:
结果是这样:
此外,如果你使用的是Python 3.7或更新版本,os.fork也有同样的功能,这要感谢新的at_fork钩子。
以上代码在Python3.7中的输出是:
加到0后面
sum([a,b,c])看起来是和a+b+c等价的,但是实际上,它等价于0+a+b+c。也就是说,对于不支持加到0后面的类型,它就不会运行。
为了解决这一点,你可以提供自定义开始元素来代替0:
sum对float和int类型的求和进行了很好的优化,不过也可以处理任何其他自定义类型。但是,它拒绝对bytes、bytearray和str求和,因为join针对这个操作进行了很好的优化:
在Jupyter Notebook中进行索引补全
你可以通过提供_ipython_key_completions_method在Jupyter notebook中定制索引补全。这样,你就可以控制在输入像d["x之后按下Tab键时显示什么:
注意,该方法没有将查找到的字符串作为参数。
英文原文:https://habr.com/en/company/mailru/blog/447212/
译者:Nothing