如何在python中调用函数中的函数

时间:2016-09-03 08:44:26

标签: python function nested

我对python中的函数有一个问题,我在编程方面很新,所以请以最简单的方式给出你的例子,谢谢

我想在这样的函数中调用函数:

def func1 (a):
    b = a + 1
    def func2():
       c = b*3
       print c
    def func3():
       c = b/5
       print c

func1(5).func2()

如何在func1内调用func2或func1内的func3?是的,我确实需要func1,func2和func3,我不想使用类

5 个答案:

答案 0 :(得分:1)

你试过打电话吗? 和提示:记住缩进

def func1 (a):
    b = a + 1
    def func2():
       c = b*3
       print c
    def func3():
       c = b/5
       print c
    funct2()  #function called , WORKS ! 

答案 1 :(得分:0)

def func1 (a):
    b = a + 1
    def func2():
       c = b*3
       print c
    def func3():
       c = b/5
       print c
    return func2,func3

关闭可能有效

答案 2 :(得分:0)

虽然你真的不需要新函数来完成这么简单的任务,但在另一个函数中调用函数会是这样的:

def func2(b):
    return b*3

def func3(b):
    return b/5

def func1(a):
    b = a + 1
    c = func2(b)
    print c
    c = func3(b)
    print c

最后用输入调用你的函数,例如5:

func1(5)

答案 3 :(得分:0)

有一种方法可以实现您想要的语法,但它非常不规则,我强烈建议不要使用它。这很黑。

def func1(a):
    b = a + 1
    def func2():
       c = b*3
       print c
    def func3():
       c = b/5
       print c
    func1.func2 = func2
    func1.func3 = func3
    return func1

现在,在解释器shell中:

>>> def func1(a):
...     b = a + 1
...     def func2():
...        c = b*3
...        print c
...     def func3():
...        c = b/5
...        print c
...     func1.func2 = func2
...     func1.func3 = func3
...     return func1
... 
>>> func1(5).func2()
18
>>> 

对于Guido,请不要这样做。

答案 4 :(得分:0)

函数对象func2func3是函数func1的本地对象,这意味着它们不在func1之外,除非func1显式返回它们到呼叫环境。

因此,如果你想调用func1之外 的那些函数(就像你发布的代码试图做的那样),你需要做这样的事情:

def func1(a):
    b = a + 1
    def func2():
       c = b*3
       print c
    def func3():
       c = b/5
       print c
    return func2, func3

f2, f3 = func1(5.0)
f2()
f3()

<强>输出

18.0
1.2

f2f3将使用a创建时func1参数的值。如果您想使用其他a,请再次拨打func1;每次调用它时,都会创建func2func3函数对象的新实例。

<小时/> 除了

请注意,我将5.0而非5的参数传递给func1。这是为了确保b/5中的func3使用浮点除法。这在Python 3中不是必需的,并且为了在Python 2中获得Python 3行为,您可以放置​​

from __future__ import division

位于脚本的顶部。