Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在另一个函数中调用函数?_Python_Python 2.7_Python 3.x - Fatal编程技术网

Python 如何在另一个函数中调用函数?

Python 如何在另一个函数中调用函数?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,如果我有两个函数,一个在另一个内部 def test1(): def test2(): print("test2") 如何调用test2 请注意,test2函数在test1之外不可用。例如,如果您稍后在代码中尝试调用test2,您将得到一个错误 请注意,test2函数在test1之外不可用。例如,如果您稍后在代码中尝试调用test2,您将得到一个错误。您不能,因为一旦test1返回,test2就会停止存在。要么从外部函数返回它,要么只从那里调用它。你不能,因为一旦tes

如果我有两个函数,一个在另一个内部

def test1():
    def test2():
        print("test2")
如何调用test2

请注意,test2函数在test1之外不可用。例如,如果您稍后在代码中尝试调用test2,您将得到一个错误


请注意,test2函数在test1之外不可用。例如,如果您稍后在代码中尝试调用test2,您将得到一个错误。

您不能,因为一旦test1返回,test2就会停止存在。要么从外部函数返回它,要么只从那里调用它。

你不能,因为一旦test1返回,test2就会停止存在。可以从外部函数返回它,也可以仅从外部函数调用它。

您也可以这样调用它:

def test1():
    text = "Foo is pretty"
    print "Inside test1()"
    def test2():
        print "Inside test2()"
        print "test2() -> ", text
    return test2

test1()() # first way, prints "Foo is pretty"

test2 = test1() # second way
test2() # prints "Foo is pretty"
让我们看看:

如果不想调用test2:

让我们看看:


您也可以这样称呼它:

def test1():
    text = "Foo is pretty"
    print "Inside test1()"
    def test2():
        print "Inside test2()"
        print "test2() -> ", text
    return test2

test1()() # first way, prints "Foo is pretty"

test2 = test1() # second way
test2() # prints "Foo is pretty"
让我们看看:

如果不想调用test2:

让我们看看:


如果我在test1中有多个函数怎么办?@zachgates它们仍然只能在test1中调用。在test1中定义的任何函数都只能在test1中使用。如果以后要使用该函数,则需要在外部定义它test1@sredmond:或从test1返回。如果test1中有多个函数,该怎么办?@zachgates它们仍然只能在test1中调用。在test1中定义的任何函数都只能在test1中使用。如果以后要使用该函数,则需要在外部定义它test1@sredmond:或者从test1返回。如果他是说如何从test1外部调用test2,那么这是正确的,但如果他问如何从test1内部调用它,则不正确。这个问题还不清楚。如果他是说我如何从test1外部调用test2,这是正确的,但如果他问如何从test1内部调用它,则不是正确的。这个问题并不清楚。你应该澄清你的问题:你的意思是如何从test1内部调用它,还是从外部调用它?正如这两个答案所显示的,答案要么是显而易见的,要么你不能。如果你想在test1之外使用test2,你可以像任何其他对象一样返回它——这就是装饰器的工作方式。我会用return test2返回它吗@jonrsharpe@zachgates是的,没错。函数在Python中是一流的;它们只是可调用的对象,你可以像其他任何东西一样传递它们。你拥有的是函数定义中的函数定义。内部函数每次执行一次,外部函数每次执行一次,并创建一个新函数。您希望调用的函数数量可能是无限的,您应该澄清您的问题:您的意思是如何从test1内部调用它,还是从外部调用它?正如这两个答案所显示的,答案要么是显而易见的,要么你不能。如果你想在test1之外使用test2,你可以像任何其他对象一样返回它——这就是装饰器的工作方式。我会用return test2返回它吗@jonrsharpe@zachgates是的,没错。函数在Python中是一流的;它们只是可调用的对象,你可以像其他任何东西一样传递它们。你拥有的是函数定义中的函数定义。内部函数每次执行一次,外部函数每次执行一次,并创建一个新函数。您希望调用的函数数可能是无限的,其中哪一个?
>>> Inside test1()
>>> Inside test2()
>>> test2() ->  Foo is pretty

>>> Inside test1()
>>> Inside test2()
>>> test2() ->  Foo is pretty
test1() # first way, prints "Inside test1()", but there's test2() as return value.
>>> Inside test1()
print test1()
>>> <function test2 at 0x1202c80>
def test1():
    print "Inside test1()"
    def test2():
        print "Inside test2()"
        def test3():
            print "Inside test3()"
            return "Foo is pretty."
        return test3
    return test2

print test1()()() # first way, prints the return string "Foo is pretty."

test2 = test1() # second way
test3 = test2()
print test3() # prints "Foo is pretty."
>>> Inside test1()
>>> Inside test2()
>>> Inside test3()
>>> Foo is pretty.

>>> Inside test1()
>>> Inside test2()
>>> Inside test3()
>>> Foo is pretty.