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.