今天准备离职的同事交接工作,有一段代码,大家看看。

2019-10-09 21:36:34 +08:00
 CLANNADHH
今天准备离职的同事交接工作,有一段代码,大家看看。
django 写的接口,POST 请求,一共四个参数,下面用 a,b,c,d 代替

a = request.post.get("a")
b = request.post.get("b")
c = request.post.get("c")
d = request.post.get("d")

try:
a + b + c + d + "abcd"
except:
# 这里是错误的处理。

后来询问该同事,他说这是做类型检测,不是字符串就会报错。
我:!!! 哦~
13963 次点击
所在节点    Python
75 条回复
richzhu
2019-10-10 10:45:55 +08:00
哈哈哈哈哈哈😂曰:“有什么问题吗?又不是不能用” (:dog
lan2e
2019-10-10 10:49:53 +08:00
学到一招,不得不说这哥们 6p 啊
hellwys1
2019-10-10 10:58:56 +08:00
我真没觉得这代码有问题……
dog82
2019-10-10 10:59:51 +08:00
这样写比较取巧,对性能又没啥影响
wliansheng
2019-10-10 11:43:46 +08:00
可以用 serializer 啊。直接类型检查和 format 各种处理,
artandlol
2019-10-10 11:54:19 +08:00
@ila 这么做是最简单的,当然也可以选择写个检测的
ganbuliao
2019-10-10 12:00:02 +08:00
这段代码 再加个注释 就完美了 ^_^
fml87
2019-10-10 12:26:49 +08:00
a, b, c, d = map(request.post.get, ["a", "b", "c", "d"])
assert all(isinstance(x, str) for x in [a, b, c, d]), "not str"

其实感觉用 isinstance 可读性没有 a+b+c+d 好。。
ddzzhen
2019-10-10 12:30:43 +08:00
奇才
v3xe
2019-10-10 12:35:42 +08:00
降低可读性,稳固职场地位。
Levi233
2019-10-10 12:41:36 +08:00
先不说你同事用取巧的方式写代码,你连这段代码都看不懂,你不觉得你自己问题更大吗?还发出来取笑别人,无语了。
UserNameisNull
2019-10-10 13:28:02 +08:00
精辟。巧妙,学习了。
CLANNADHH
2019-10-10 13:43:34 +08:00
@Levi233 发出来大家讨论,怎么就成了取笑别人呢?
mengzhuo
2019-10-10 13:46:14 +08:00
可以啊,但是不判空么
Vegetable
2019-10-10 13:51:15 +08:00
少了一段注释,这哥们是个小机灵鬼!
simonhunter
2019-10-10 13:54:43 +08:00
请教一下,话说这样写要怎么判断 abcd 中哪个不是字符串需要重新获取或异常处理呢……在 except 里面再一个个去排查吗?
dwggrv
2019-10-10 14:05:12 +08:00
妙啊~
houzhimeng
2019-10-10 14:07:59 +08:00
挺有意思的,不错
wersonliu9527
2019-10-10 14:23:13 +08:00
之前在别人 js 代码里面见过
function sbtString(s1, s2) {
var ous = "";
s1 += "";
s2 += "";
for (var i = 1; i <= s1.length; i++) {
var c1 = s1.substring(i - 1, i);
var c2 = s2.indexOf(c1);
if (c2 == -1) {
ous += c1;
}
}
return ous;
}
Levi233
2019-10-10 14:29:03 +08:00
@simonhunter 如果 abcd 里面有变量不是字符串,用+号拼接会报错,因为+号只能拼接字符串类型的变量,有别的类型的变量拼接出来会报错,python 是动态强类型语言。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/607625

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX