先找到爱的人,再写出优秀的代码
过去的你只会在代码里消磨每个周末,现在的你有她一起探索生活里的小惊喜;过去的你是一个死宅,现在的你想陪她拿着相机看遍世界的景色。
过去的你只会在代码里消磨每个周末,现在的你有她一起探索生活里的小惊喜;过去的你是一个死宅,现在的你想陪她拿着相机看遍世界的景色。
在Python开发过程中,我们难免会遇到多重条件判断的情况的情况,此时除了用很多的if...elif...else
以外,还可以巧用or
关键字实现。
例如,我们要获取天气信息,现在有三个api接口。
1 | api_1() |
其中api_1()
的数据又详细又好,但是接口不稳定,可能随时会掉线。
api_2()
返回的结果比api_1()
稍微差一点,但是稳定性还不错。
api_3()
接口返回的是兜底数据,就是在前两个接口都故障的情况下才会使用。
如果前两个接口正常工作时返回字典,故障时他们都会返回None
。
现在我们要获取天气信息,你可能会这样写代码:
1 | weather = api_1() |
代码这样写,功能自然是没有问题,但是非常难看。
实际上,代码可以写为:
1 | weather = api_1() or api_2() or api_3() |
只需要1行代码就能实现自动选择。如果api_1()
返回的是一个非空字典,那么由于短路效应
,后面的两个函数都不会运行。当api_1
返回None时,api_2()
才会运行。并且如果api_2()
返回非空字典,那么api_3()
依然不会运行。
我们现在在Jupyter里面测试一下,首先看看如果api_1()
直接返回非空字典的情况,如下图所示。
可以看到,在api_2()
和api_3()
里面的两行print
语句都没有执行。
接下来我们看看api_1()
故障时候的情况。
此时先运行api_1()
返回None,再运行api_2()
返回非空字典。符合预期。
当前两个函数都返回None的时候,第三个函数才会运行,如下图所示。
除了做多重条件判断外,还可以用来自己和自己取或操作,实现重试。
例如api_1()
可能成功也可能失败,所以需要尝试运行3次,那么代码可以这样写:
1 | weather = api_1() or api_1() or api_1() |
产品小姐姐召集了项目组的五位开发同学,宣布一项重要的决定。
“作为一个产品,一定要与开发一起对项目有深入的沟通和交流,才能让项目做的更好。所以,今天我们来做一个不记名投票,确定哪几位同学可以和我一起讨论产品的设计方向。”
“现在给到大家的是大老板L叔为大家的产品能力评分,最低1分,最高5分,每人都不一样。大家都只知道自己的得分,互相不知道别人的得分”
“我们的投票规则,是大家一起讨论,不低于几分的人可以和产品一起讨论项目的设计方案。然后独立不记名投赞成票或者反对票”
“首先,1分能力太差,所以不低于2分的人能和产品一起讨论,大家投票。”
“不出所料,1票反对,4票赞成。”
“那分数提高一点,不低于3分的人可以和产品一起讨论项目。大家投票。”
“咦,也是1票反对,4票赞成。”
“那我们看看大于等于4分,才能和产品讨论。”
“也是1票反对4票赞成。”
“那5分呢。”
“还是一票反对,四票赞成。”
“6分呢。”
“还是一票反对,4票赞成。”
“那么好的,经过民主投票,少数服从多数,大多数人都赞成产品能力为6分的人才能跟我一起讨论产品,由于没有人超过6分,所以这个项目我说了算。散会。”
如果你经常使用Python的命令行交互环境,你一定遇到过下面这个现象:
1 | >>> a = 'test' |
首先定义一个变量a
,它的值为字符串test
。现在,当你在命令行交互环境直接输入变量名再回车的时候,你看到的是'test'
,当你输入print(a)
的时候,你看到的却是test
。
大家在开发Python的过程中,一定会遇到很多反斜杠的问题,很多人被反斜杠的数量搞得头大。
这篇文章,首先会让你越看越糊涂,然后再让你越看越清醒。请坚持看完。
在Python中,如果要判断一个字符串是否在另一个字符串里面,我们可以使用in
关键字,例如:
1 | >>> a = '你说我是买苹果电脑,还是买windows电脑呢?' |
如果有多个句子和多个关键字,那么可以使用for
循环来实现:
1 | sentences = ['你说我是买苹果电脑,还是买windows电脑呢?', |
运行效果如下图所示:
现在如果有100000000个句子,有1000个关键字,那么你需要对比1000亿次才能全部查询完成。这个时间代价太大了,如果Python一秒钟能运行500万次查询(实际上没有这么快),那么1000亿次查询需要20000秒,接近6小时。而且,由于in
关键字的时间复杂度为O(n)
,如果有大量长句子,查询时间会更长。
这篇文章没有代码,请放心阅读。
程序员最宝贵的东西是生命,生命属于程序员只有一次。一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为搭建环境浪费时间而悔恨,也不会因为集群无法运行而羞耻。这样,在她开发的时候,她能够说:“我的整个生命和全部精力,都已经献给了开发中最重要的事情——设计程序,实现程序和调Bug。” ——P酱。
P酱是公司新来的实习生妹子。听说是一个文科生。文科生应该会去文案组或者策划组吧。什么?来数据组?让我来带?
于是我和P酱生活工作在了一起。