当前位置: 首页 > 知识库问答 >
问题:

在Python中预先声明函数[关闭]

汝开畅
2023-03-14

我在自学Python。为什么下面的代码不起作用?我是否必须在使用其他函数之前预先声明它?

def f():
    g()
    

def g():
    f()


f()

代码应该创建一个永无止境的循环。

编辑:为什么这段代码什么也不输出?

def f1():
    print("1")
    f2()
  
def f2():
    print("2")
    f1()


f1()

共有1个答案

赫连晋
2023-03-14

对于预声明,答案是否定的。因为python在执行时寻找函数。

但由于递归限制,此代码可能会失败。

def g():
    print("a")
    f()

def f():
    print("b")
    g()


f()

您将获得:

a
b
a
b
....
a
b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
....
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 3, in g
  File "<stdin>", line 3, in f
  File "<stdin>", line 2, in g
RecursionError: maximum recursion depth exceeded while calling a Python object

您的代码不会创建无限循环,而是创建无限递归。

编辑:为您编辑的代码回答问题:输入错误如果您试图复制代码,它会因为缩进而失败,但如果重新编码,它会正常工作(直到递归限制)

 类似资料:
  • 我不明白发生了什么事。我严格遵循所有的微软文档,事实上甚至不使用任何我自己的脚本/代码。首先,我按照他们的文档创建Python函数。成功了。https://docs.microsoft.com/en-us/azure/azure-functions/create-first-function-cli-python?tabs=azure-cli、cmd、browser使用命令行工具将Azure功能连

  • 5.1. 函数声明 函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 func name(parameter-list) (result-list) { body } 形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量,其值由参数调用者提供。返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的。如

  • 问题内容: 是否可以在不首先完全定义函数的情况下调用函数?尝试执行此操作时,出现错误:“未定义 function_name ”。我来自C ++背景,因此这个问题使我感到困惑。 在工作之前声明该功能: 但是,尝试在未先定义函数的情况下调用该函数会带来麻烦: 在C ++中,一旦将其标头放在函数后,就可以在调用后声明一个函数。 我在这里想念什么吗? 问题答案: Python中一种惯用的方式是编写: 只要

  • 问题内容: 似乎有两种不同的方法可以在Golang中声明函数,如下所示: 以上作品。但是,以下方法不起作用: 它会抱怨: 那么和之间有什么区别? 我发现它的原因可能也是因为我也编写了许多Javascript。在Go中,似乎很少有人看到像这样的函数。在这两个中,我们可以说哪个比另一个更正确吗? 问题答案: 当你做 您正在为该变量分配匿名函数。您也可以这样写: 创建函数的另一种方法是创建一个命名函数:

  • 2.2. 函数声明 2.2.1. Python 和其他编程语言数据类型的比较 与其它大多数语言一样 Python 有函数, 但是它没有像 C++ 一样的独立的头文件;或者像 Pascal 一样的分离的 interface/implementation 段。 一旦需要函数时, 像下面这样声明即可: def buildConnectionString(params): 首先, 函数声明以关键字 de

  • 每个函数前面应该放置一段块注释,概要描述该函数做什么以及(如果不是很清晰)如何使用该函数。重要的设计决策讨论以及副作用说明也适合放在注释 中。避免提供那些代码本身可以清晰提供的信息。 函数的返回类型应该单独占据一行,(可选的)缩进一个级别。不用使用默认返回类型int;如果函数没有返回值,那么将返回类型声明为void。如 果返回值需要大段详细的说明,可以在函数之前的注释中描述;否则可以在同一行中对返