py 的字符串拼接是不是有点反人类啊

2017-03-17 17:45:21 +08:00
 yxslnmp
一个 url : http://www.xxx.xxx/search/user + '/' +id , id 为 int 型,结果报错,本来打算用 join 的,发现 join 函数也不允许连接一个 int 型
我主要写 PHP 的。换 py 写感觉好不适应
7260 次点击
所在节点    Python
75 条回复
upczww
2017-03-17 17:48:10 +08:00
str(id)
devzero
2017-03-17 17:48:58 +08:00
url 是 str 型的,拼接要类型相同吧
swulling
2017-03-17 17:49:35 +08:00
请用 str.format
jasontse
2017-03-17 17:49:41 +08:00
强类型的差别,感觉又要吵了。。。。
kaka826
2017-03-17 17:49:41 +08:00
eastpiger
2017-03-17 17:51:09 +08:00
字符串拼接都是推荐"".format()来做的吧
imn1
2017-03-17 17:57:30 +08:00
这个要看人类怎么定义
yxslnmp
2017-03-17 17:59:22 +08:00
@upczww
@devzero
@swulling
@jasontse
@kaka826
@eastpiger
感谢各位解答。。直接 str()了,写了几个月吐槽点越来越多。
比如用 peewee 库, get 一个不存在的数据会报错,还非要 try 捕捉下, PHP 里就没有这么多蛋疼的地方
希望随着时间的推移让我爱上 py 交易吧
wevsty
2017-03-17 18:02:05 +08:00
py 这也算蛋疼的话,那 C++之类只能哭晕在厕所了
liujinlingchn
2017-03-17 18:02:34 +08:00
我曹, 还敢有 python 反人类的
拉出去
dishonest
2017-03-17 18:03:42 +08:00
@yxslnmp 这个不是 python 的锅吧
peewee 我没用过,如果你用 django 的 ORM , get 仍然会报错,但是用 first 就不会。
这个取决于你的需求,如果这是一个意料之外的,比如不合法访问,那么报错保护了数据,直接结束整个流程,是完全正确的;反之如果处理不存在的情况也是一种业务上的需求,你可以 try ,也可以用 first 再去处理 first 的返回值。
kindjeff
2017-03-17 18:04:28 +08:00
其实这个字符串拼接不自动转还是有好处的!

——以前用 flv.js 视频时间显示不出来,慢慢找发现我给的数字其实是字符串型,它用+号加起来的时候全部变成了巨长的数字。
scriptkid
2017-03-17 18:05:18 +08:00
各有各的蛋疼之处,主要看你习惯罢了
python 这样的语言你都觉得反人类,那我还有什么话说
dishonest
2017-03-17 18:05:36 +08:00
@yxslnmp 如果 PHP 不报错,那空值直接进入下面的业务,产生无法控制的 bug ,这个才是真反人类
mutoulbj
2017-03-17 18:07:32 +08:00
如果 get 不报错,那你想获得什么结果呢
yxslnmp
2017-03-17 18:10:08 +08:00
@imn1 #7
@dishonest #14
@scriptkid #13
@kindjeff #12
@dishonest #11
@liujinlingchn #10
@wevsty #9

我知道错了,主要刚过来写没多久,保留了很多 PHP 的习惯,各位打住,避免引起不必要的战争
maomaomao001
2017-03-17 18:11:30 +08:00
没有模板字符串也就算了,字符串拼接居然不会自动转换类型。。。。
jkneedout
2017-03-17 18:19:04 +08:00
用 c 语言的表示很淡定
Ge4Los
2017-03-17 18:24:09 +08:00
字符串拼接居然用 + 。
不用 format 也可以 % 来拼接啊。
另外 peewee get 不到的话,还有 get_object_or_404() 的方法。
LZ 还是多看看文档吧
GuestID
2017-03-17 18:25:12 +08:00
就算报错,也会和你清清楚楚的说是类型错误啊。。

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

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

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

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

© 2021 V2EX