我解决了一个问题而且让我感到困惑。在以下代码中没有
counts = mapReduce(lines, mapper=computeWordCounts, reducer=sumUpWordCounts);
错了?这仅仅是伪代码还是这种用法实际上是可能的?
def computeWordCounts(line):
# TODO
def sumUpWordCounts(word, counts):
# TODO
def mapReduce(data, mapper, reducer):
# TODO
def test():
with open('/Users/bgedik/Desktop/zzz.txt') as f:
lines = f.read().splitlines()
counts = mapReduce(lines, mapper=computeWordCounts, reducer=sumUpWordCounts);
for word, count in counts:
print word, " => ", count
答案 0 :(得分:3)
在python函数和类中是一等公民,你可以像传统的其他变量一样传递它们
def square(a_var):
return a_var ** 2
def apply(value,fn):
return fn(value)
print apply(5,square)
您也可以重命名
sq = square
print sq(5)
还有更多内容,请参阅文档https://docs.python.org/2/library/stdtypes.html#functions
答案 1 :(得分:-2)
它完全有效,它们被称为命名参数。它们是在函数中间跳过任意参数的一种方式,并且仍然知道你实际发送了哪些参数。
这种模式实际上非常普遍,从VB6到C#等等!