有关python语法的新手问题。我有一些函数调用,如下面的
summaryA = do_something(lambda info: (info.a, 1)). \
.do_other() \
.do_anoter() \
.saveAsTextFile('/output/path/a.tsv')
summaryJ = do_something(lambda info: (info.j, 1)). \
.do_other() \
.do_anoter() \
.saveAsTextFile('/output/path/j.tsv')
summaryZ = do_something(lambda info: (info.z, 1)). \
.do_other() \
.do_anoter() \
.saveAsTextFile('/output/path/z.tsv')
info
是类Info
的一个实例。
这些电话非常相似。所以,我想删除复制粘贴,并得到类似下面的内容(这只是想法,我不是“本机pythonian”)
summaryA = super_do(Info.a, '/output/path/a.tsv')
summaryJ = super_do(Info.j, '/output/path/j.tsv')
summaryZ = super_do(Info.z, '/output/path/z.tsv')
如何编写函数super_do
?
答案 0 :(得分:2)
你可以这样做:
def super_do(attr, path):
return do_something(lambda info, attr=attr: (getattr(info, attr), 1)).\
.do_other() \
.do_another() \
.saveAsTextFile(path)
然后您可以像这样使用它:
summaryA = super_do("a", "/output/path/a.tsv")