如何在Python3中调用函数内部的函数
如何调用函数如何在Python3中调用函数内部的函数,python,python-3.x,Python,Python 3.x,如何调用函数f2 def f1(): print( "f1" ) def f2(): print( "f2" ) #f1.f2() 更多说明: 通过此链接http://stackoverflow.com/questions/11154634/call-nested-function-in-python其与此代码的配合: def f1(): print( "f1" ) def f2(): print( "f2" ) f1.
f2
def f1():
print( "f1" )
def f2():
print( "f2" )
#f1.f2()
更多说明:通过此链接
http://stackoverflow.com/questions/11154634/call-nested-function-in-python
其与此代码的配合:
def f1():
print( "f1" )
def f2():
print( "f2" )
f1.f2 = f2
f1()
f1.f2()
是否有直接校准f2的方法。如果不先呼叫f1?这是不可能的
函数f2
在f1
中定义。直到调用了f1
后,才会定义它
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:def f1():
: print( "f1" )
: def f2():
: print( "f2" )
:--
In [2]: f1()
f1
In [3]: f2()
--------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-fdec4c1c071f> in <module>()
----> 1 f2()
NameError: name 'f2' is not defined
In [4]: f1.f2()
--------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-3af025f48622> in <module>()
----> 1 f1.f2()
AttributeError: 'function' object has no attribute 'f2'
[1]中的:%cpaste
粘贴代码;在行中单独输入“---”以停止或使用Ctrl-D。
:def f1():
:打印(“f1”)
:def f2():
:打印(“f2”)
:--
在[2]:f1()中
f1
在[3]:f2()中
--------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在()
---->1 f2()
名称错误:未定义名称“f2”
在[4]中:f1.f2()
--------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
---->1 f1.f2()
AttributeError:“函数”对象没有属性“f2”
它不能在f1
之外调用,名称f2
没有在f1
的范围之外定义,这是不可能的
函数f2
在f1
中定义。直到调用了f1
后,才会定义它
In [1]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:def f1():
: print( "f1" )
: def f2():
: print( "f2" )
:--
In [2]: f1()
f1
In [3]: f2()
--------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-3-fdec4c1c071f> in <module>()
----> 1 f2()
NameError: name 'f2' is not defined
In [4]: f1.f2()
--------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-3af025f48622> in <module>()
----> 1 f1.f2()
AttributeError: 'function' object has no attribute 'f2'
[1]中的:%cpaste
粘贴代码;在行中单独输入“---”以停止或使用Ctrl-D。
:def f1():
:打印(“f1”)
:def f2():
:打印(“f2”)
:--
在[2]:f1()中
f1
在[3]:f2()中
--------------------------------------------------------------------
NameError回溯(最近一次呼叫上次)
在()
---->1 f2()
名称错误:未定义名称“f2”
在[4]中:f1.f2()
--------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
---->1 f1.f2()
AttributeError:“函数”对象没有属性“f2”
它不能在
f1
之外调用,名称f2
未在f1
的范围之外定义。在至少执行一次f1之前,您不能调用f2,因为在执行f1之前,f2不存在。正是执行f1代码的动作导致f2被创建为函数,然后成为可调用的
在Java中,类或方法定义是在编译时创建的,这允许您在没有执行父容器的情况下访问它们。Python中不是这样。在至少执行一次f1之前,不能调用f2,因为在执行f1之前,f2不存在。正是执行f1代码的动作导致f2被创建为函数,然后成为可调用的 在Java中,类或方法定义是在编译时创建的,这允许您在没有执行父容器的情况下访问它们。Python不是这样。f2()函数是通过调用f1()创建的 因此,不,没有f1就不能调用f2,因为它还不存在:-)f2()函数是通过调用f1()创建的
因此,不,您不能在没有f1的情况下调用f2,因为它还不存在:-)可能与否重复,没有。就像你不能指定一个没有完整路径的文件一样。计算机怎么知道在哪里找呢?如果你想把
f2
放在外部范围内,就把它放在那里。可能重复的No,没有。就像你不能指定一个没有完整路径的文件一样。计算机怎么知道在哪里找呢?如果你想把f2
放在外部作用域中,就把它放在那里。这不是真正的作用域问题。调用f1
后才会创建f2
。但即使调用了f1
,您仍然无法从f1
外部调用f2
。这不是范围吗?那将是第二个问题;然而,OP说他甚至不打算调用f1,因此函数一开始就不存在。这不是一个真正的范围问题。调用f1
后才会创建f2
。但即使调用了f1
,您仍然无法从f1
外部调用f2
。这不是范围吗?那将是第二个问题;然而,OP说他甚至不打算调用f1,所以函数一开始就不存在。