Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3函数在代码的另一部分运行之前没有定义?_Python_Python 3.x_Function - Fatal编程技术网

Python 3函数在代码的另一部分运行之前没有定义?

Python 3函数在代码的另一部分运行之前没有定义?,python,python-3.x,function,Python,Python 3.x,Function,我刚刚开始用python编程,并且一直在寻找简单的程序来开始更好的理解 我正忙着写一个石头剪刀布文本游戏,为了找出游戏的赢家/输家等等,我创建了一个函数。有一段时间,当我运行我的程序时,当调用函数时,我不断得到一个错误,那就是我的函数没有定义。我的函数低于我的初始代码 然而,出于某种原因,我将我的函数移到了全局变量声明下代码的顶部,现在我的函数可以完美地执行 为什么会这样?有没有一种方法可以让我的函数位于我的主代码之下,但不会因为我的函数未定义而导致错误。我是否只需要先声明我的函数,然后再调用它

我刚刚开始用python编程,并且一直在寻找简单的程序来开始更好的理解

我正忙着写一个石头剪刀布文本游戏,为了找出游戏的赢家/输家等等,我创建了一个函数。有一段时间,当我运行我的程序时,当调用函数时,我不断得到一个错误,那就是我的函数没有定义。我的函数低于我的初始代码

然而,出于某种原因,我将我的函数移到了全局变量声明下代码的顶部,现在我的函数可以完美地执行

为什么会这样?有没有一种方法可以让我的函数位于我的主代码之下,但不会因为我的函数未定义而导致错误。我是否只需要先声明我的函数,然后再调用它,如果是这样,我将如何声明一个空函数

我很想了解,所以任何帮助都将不胜感激

为什么会这样

因为这就是Python的工作方式——模块或脚本顶层的所有代码都是按顺序执行的,所以函数只能在执行
def
语句之后定义

您必须了解,在Python中,一切都是对象,包括函数、类等,因此
def
语句主要是一种语法糖,它创建函数对象(从
def
块)并将其绑定到函数名,如果函数只是模块或脚本中的另一个全局变量,那么在定义变量之前,您不会期望能够使用它,对吗

有没有一种方法可以让我的函数位于我的主代码之下,但不会因为我的函数未定义而导致错误

是的,只需将“主代码”放在函数中,并在脚本末尾调用此函数:

import something
import another thing

def main():
    bar = foo()
    print("the answer is {}".format(bar))

def foo():
    return 42


# this makes sure the main function will only be executed
# when using your .py file as a script, not when importing
# it as a module.    
if __name__ == "__main__":
    main()

在调用函数之前,必须先定义函数。您必须定义函数,然后才能在程序中的任何位置调用函数


Python就是这样工作的,所有的东西都是按顺序执行的

您试图运行的代码在哪里?请将其添加到questionFunctions中,在定义函数之前无法调用它们。脚本通常有一个调用其他函数的
main
函数,而对
main()
的调用在脚本的末尾,因此在定义完所有内容后就可以调用。非常感谢您的解释,我非常感谢您花时间简单地解释它。