V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  workwonder  ›  全部回复第 6 页 / 共 12 页
回复总数  223
1  2  3  4  5  6  7  8  9  10 ... 12  
2018-02-05 22:50:28 +08:00
回复了 abaoye 创建的主题 Python 招聘- Python 数据工程师
才 20k?
2018-01-24 22:27:37 +08:00
回复了 jimliang 创建的主题 生活 现在还有人用五笔吗?
我用双拼自然码方案
woysudpnzirjmafhan
2018-01-23 20:06:24 +08:00
回复了 Cbdy 创建的主题 Java 作为良好的 Java 编码规范,可省略的 this 该不该省略?
不带 this 感觉像方法内部的局部变量
sqlite 就是专为这种场景设计的吧
2017-12-20 21:47:30 +08:00
回复了 zachguo 创建的主题 Python Python 2017 年这一年有什么值得一提的新东西吗?
@owenliang asyncio 有什么问题?
2017-11-21 22:38:35 +08:00
回复了 shuizhengqi 创建的主题 Python 来说说你们是怎么用 django 做微服务 的
你这还是一个大单体项目,然后只暴露其中一个模块部署多份,感觉有点掩耳盗铃啊。
2017-11-21 22:26:43 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@dstwhk 大家的观点都表达清楚了,这贴没啥好讨论得了,也已经沉底,你翻那么深觉得恶心能怪谁。

我在英文社区交流当然不会用中文,我不介意蹩脚的英文,我会尽力清晰表达自己的意思,欢迎围观: https://github.com/wonderbeyond
2017-11-15 21:05:33 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@Daetalus 我不是说了,我的数据逻辑里面有 None 是正常逻辑,表示未知。
你可以认为我的做法没有普适性,但你的言论更加武断。
2017-11-15 11:10:35 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@ruoyu0088

心好累!你一定没注意看我的诉求,我完全可以加各种判断,但是场景太多,容易出错。
你写的表达式并没有覆盖 min_ignore_none 所处理的各种情况,但是已经很长了。

你试试:

>>> min(*[], default=1)
>>> min(*[1], default=None)
>>> min(1, default=None)

当然你不会手写这种表达式,但他们在我的场景里面是会出现的
2017-11-15 10:05:25 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@zhicheng 哥们,我刚确认了下 python2 和 python3 不一样

>>> import sys
>>> sys.version
'3.6.2 (default, Jul 17 2017, 23:14:31) \n[GCC 5.4.0 20160609]'
>>> min([None, 1])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'int' and 'NoneType'
>>> None > 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'NoneType' and 'int'
2017-11-15 10:02:30 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@lrxiao 我承认我的标题有点雷人。发帖前在处理这个问题,把一些 min 的使用场景替换了下,心情比较激动😂

我的诉求能否普遍适用,大家自己斟酌。

我觉得把它看做是 API 风格问题也能说通,大家可以看看数据库怎么处理 NULL 的,有自己的一套主见。

然后,留一个问题大家看怎么解决,就是我为了判断序列是否为空,要提前把迭代器消化成 list,会浪费内存,对于比较长的生成器是不靠谱的。
2017-11-15 09:23:25 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@lrxiao 我不仅 ignore none,还忽略了空参数。
我觉得挺安全。min 能接受任意长度的序列,空序列除外。我在序列为空时返回 None 是自我保护。此时请不要再说数据校验的事儿(很多人在纠结),这里只比大小,逻辑既然走到这,说明这些情况是合理的。
2017-11-15 09:12:23 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@xiaket 赞同,我就是这个意思。而且我确实不关心里面是否有 None,或者去掉 None 之后是否只剩空列表。
2017-11-15 08:24:26 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@billgreen1 你不觉得 float('inf/nan') 是种很晦暗东西吗,我就当不认识它们,也几乎没见人用过,过于奇怪,比如为啥没有 int 类型的等价物。
用 None 表示未知(没有设置)我觉得没毛病,而且类型无关。
2017-11-14 21:41:55 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
对了,我想额外补充一句,我的场景里面要跟其它子系统对接的,我完全没有对其**数据校验**的需要,也完全没有**尽早报错**的考虑,我能提取到需要的属性则提取之,提出不到就设置为 None,然后我这边继续运行我的。
2017-11-14 21:32:34 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@dawncold 完全可以,只是在我的场景里面 min 用的比较多,需要判断的也比较多,最近多次意外挂掉。才搞了个包办的 min/max 实现。
2017-11-14 21:28:05 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
@n2ex2 确实,我实现的 min/max 替代跟我的场景比较契合。
但我觉得更大范围用于一般场景也没啥问题(这里的语义是取最大最小值,至于数据校验并不是该函数的语义,忽略掉 None 也没关系),你可以看作是 API 风格问题,换个语言的标准库,表现风格都差别很大吧。
2017-11-14 21:16:38 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
> 我觉得我会这样写:min(t.start for t in tasks if t.started)

@dawncold 这样并没有覆盖所有 corner case 呀!你应该没注意看问题。你试试:

>>> min(x for x in [None] if x)
ValueError: min() arg is an empty sequence
2017-11-14 21:14:02 +08:00
回复了 workwonder 创建的主题 Python Python 's builtin min/max is evil
> 不符合 min/max 逻辑的使用方式就应该报错而不应该过度包装

@n2ex2 我觉得是否符合逻辑得看场景,比如当我们说 世界首富 的时候考虑到了财富未被统计(p.wealth=None)的人了吗?
我的某些 task.start=None 在系统里面是正常的;我取 `min(t.start for t in tasks)` 的结果作为 project.start 也是既定规则; tasks 是空列表也是正常的,表示没有任务,那么我让 `min([])` 返回 None 表示没有结果也是符合预期的。
所以我觉得我没有过度扭曲 min/max 的语义。
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1034 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 23:00 · PVG 07:00 · LAX 16:00 · JFK 19:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.