2013-02-27 255 views
3

我最近开始学习Python,并在这里有一些代码。在python中调用函数,'(函数)未定义'?

... 
workout = input("Work out if you won?") 

if workout == "y": 
    ballone() 
elif workout == "n": 
    print("Okay.") 
    sys.exit("Not working out if you won") 
else: 
    sys.exit("Could not understand") 

##Ball one 
def ballone(): 
... 

问题在于调用'ballone'。你可以看到它被定义并且在从命令行(ballone())调用时完美工作

任何想法?我已经在网上搜索,但似乎找不到任何东西来帮助我。如果有更多代码需要发布,请让我知道:)

回答

7

将函数定义移动到之前使用它的行。

def ballone(): 
    # ... 

if workout == "y": 
    ballone() 
elif workout == "n": 
    print("Okay.") 
    sys.exit("Not working out if you won") 
else: 
    sys.exit("Could not understand") 

函数存储在标识符(变量),就像你workout值。如果你没有先定义它,那么Python怎么知道它会在后面定义呢?

+1

通常,这是通过将主逻辑放在函数中并将其调用到模块底部来完成的,通常由'if __name__ =='__main __':'保护。 – 2013-02-27 18:28:02

+0

@StevenRumbalski:'__name__'测试不会保护你免受这个错误。如果你在模块的顶部这样做,你仍然会遇到同样的问题。 – 2013-02-27 18:28:48

+0

的确如此,但我确实有资格这样做。 – 2013-02-27 18:30:02