我该如何调用main函数之外定义的函数?

时间:2014-10-14 22:58:33

标签: python algorithm function python-3.x nested

所以我对python很新,我正在研究算法而且我已经说过2个函数

func1(x)

func2(x)

已经在主要功能之外定义。

现在我想在主函数中调用这些函数,一个嵌套在另一个

像这样的东西

def funcmain(func1(func2(x)))

它显然无法正常工作我无论如何都无法让它工作。关于这个的任何提示?

编辑:我的意思是我要输入一个字符串,我希望它首先通过func2,然后从func2返回值通过func1,最后返回值func1通过func main。我已经分别测试了每个功能,它们按预期工作但我似乎无法将它们相互连接在一起

3 个答案:

答案 0 :(得分:3)

我希望此代码段有助于为您澄清事情。

#!/usr/bin/python

def func1(x):
    return x + 1

def func2(x):
    return x + 2

def main(x):
    print func1(func2(x))

if __name__ == '__main__':
    main(0)

输出为3。

答案 1 :(得分:0)

这是什么意思?你的问题不太清楚。我假设x也在某处全局定义。

def funcmain():
    return func1(func2(x))

答案 2 :(得分:0)

采取以下功能:

def func1(x):
    return x+1


def func2(x):
    return x*2

本身你可以这样做:func1(func2(3))将返回3次2加1.这是有效的,因为它本身func1(func2(3))实际上返回一个值,而不是一个函数。

但是因为你试图将它作为主函数的基本参数,如下所示:

def main(func1(func2(x))): #dont do this, this is what you did, it is bad
    return x*3

它不知道如何处理,因为x ...没有默认值。

你可以做到这一点:

def main(x=func1(func2(1)):
    return x*3

这会将相应的数学运算为1然后将其指定为x(因为正如我们之前看到的,func1(func2(3))`将返回函数结果而不是函数本身,然后将它乘以3.你默认x等于一个值(即func1(func2(1))

这仍然是不好的做法,因为你违反了func1(func2(1)出来的任何内容。

你最终想要的是更简单的东西:

def main(x):
     y = func1(func2(x))
     return y*3

或者甚至可能比那更简单

def main(x):
    return x*3

#and then just call it like this
main(func1(func2(1))