https://github.com/messense/optionaldict

2015-05-09 12:03:31 +08:00
 messense

写类似下面的代码真的是 pain in ass:

def test(a, b, c=None, d=None, e=None):
    ret = {
        'a': a,
        'b': b,
    }
    if c is not None:
        ret['c'] = c
    if d is not None:
        ret['d'] = d
    if e is not None:
        ret['e'] = e
    return ret

使用 optionaldict 就清爽多啦:

from optionaldict import optionaldict


def test(a, b, c=None, d=None, e=None):
    ret = optionaldict(
        a=a,
        b=b,
        c=c,
        d=d,
        e=e
    )
    return ret
    # or if you prefer to return a built-in dict object:
    # return dict(ret)
2622 次点击
所在节点    Python
5 条回复
loading
2015-05-09 12:19:22 +08:00
很多时候,我们需要的是更多的判断,这个一般与具体业务有关,基本每一个都会不同,所以,我个人认为,您这也是挺疼的。

ps:我指的是用户 post 来的数据。
messense
2015-05-09 13:18:08 +08:00
@loading 哈哈,其实用户 post 来的数据我是用 JSON Schema 来校验的,不用那么蛋疼。倒是写一些 SDK 啊经常有一些参数可选蛮蛋疼。
fy
2015-05-09 14:27:40 +08:00
这个挺好的,不过我一般都是先加进去,然后for in,如果遇到空值就del掉。

让我更蛋疼的一个是我希望py可以从语法上原生支持有序字典,每次读一个json格式全乱了很蛋疼啊
zhyu
2015-05-09 14:29:28 +08:00
fy
2015-05-09 14:57:05 +08:00
@zhyu 我早已知道有这个类,但并没有与之匹配的原生语法支持。

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

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

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

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

© 2021 V2EX