我可以在Python中创建一个主函数来获取一行其他函数吗?

时间:2016-04-22 05:01:22

标签: python higher-order-functions

我有两个主要包含相同代码的函数。如果传入的数组包含所有正数,则返回“True”,而如果数组包含可被10整除的所有数字,则返回“True”。

我想将这两个函数组合成这样的函数:

def master_function(array, function):
    for i in array:
        if function:
            result = True
        else:
            result = False
            break
        print(result)
        return result

唯一可能变化的部分是If语句中的“function”。当我用缺失的行编写函数时,它们不会在程序执行时被调用。

def positive_integers(array):
    i >= 0

def divisible_by_10(array):
    i%10 == 0

也不会执行测试代码。

master_function([10,20,30,35],divisible_by_10)

3 个答案:

答案 0 :(得分:1)

您的功能没有返回任何内容,您需要授予他们访问i的权限:

def positive_integers(i):
    return i >= 0

def divisible_by_10(i):
    return not i%10

def master_function(array, function):
    for i in array:
        if function(i):
            result = True
        else:
            result = False
            break
        print(result)
        return result

答案 1 :(得分:1)

您的功能不会返回任何内容。另外,您需要了解allany

def positive_integers(array):
    return all(i >= 0 for i in array)

def divisible_by_10(array):
    return all(i % 10 == 0 for i in array)

def master_function(array, function):
    return function(array)

答案 2 :(得分:0)

def master_function(array, function):
    for i in array:
        print str(i)
        if function(i):
            result = True
        else:
            result = False
        print(result)
    return result

def positive_integers(i):
    if i >= 0:
        return True

def divisible_by_10(i):
    if i%10 == 0:
        return True

master_function([10,20,30,35],divisible_by_10)