【问题标题】:How to forward-declare/prototype a function in Python? [duplicate]如何在 Python 中前向声明/原型化函数? [复制]
【发布时间】:2014-10-10 01:28:07
【问题描述】:

如何在类似于 C++ 的通用 Python 程序中对方法进行原型设计?

//PROTOTYPE
do python protoyping

writeHello() //GIVES ERROR AS IT WAS NOT DEFINED YET

def writeHello():
    print "Hello"

【问题讨论】:

  • 如果你能告诉我我做错了什么,或者这在 Python 中是否可行,那就太好了。
  • 在调用它之前定义writeHello()。 Python 中没有“原型设计”之类的东西。为什么你认为你需要它?
  • 我喜欢在程序底部定义我的函数,这是 Java 和 C++ 的习惯。我想知道是否有办法在 Python 中制作原型。
  • @GeorgeClone-y 这个特性在 Python 中只是有意义。这是因为 Python 方法定义只是被执行的代码(因此必须在解析/调用之前执行);在 Java 和 C++ 中,方法被编译为元结构。
  • @GeorgeClone-y:然后你必须把所有剩余的代码放到一个main函数中,并在你程序的最后一行调用main()

标签: python function-prototypes


【解决方案1】:

Python 没有原型设计,因为您不需要它

Python 在运行时查找全局变量;这意味着当您使用writeHello 时,该对象会在那里查找。该对象在编译时不需要存在,但确实需要在运行时存在。

在 C++ 中,您需要创建原型以允许两个函数相互依赖;然后编译器可以确定您正在使用第二个稍后定义的函数。但是因为 Python 在运行时查找第二个函数,所以不需要这样的前向定义。

举例说明:

def foo(arg):
    if not arg:
        return bar()

def bar(arg=None):
    if arg is not None:
        return foo(arg)

这里,foobar 在调用函数时都作为全局变量查找,并且您不需要 bar() 的前向声明,Python 就可以成功编译 foo()

【讨论】:

  • 原型可能有助于代码的可读性。假设您有一些您的用户将使用的类,以及该类外部的一些实现函数。您可能希望将他们的定义放在最后(在您的类定义之后),以便您的用户首先阅读相关信息(类)。
  • @jmon12:是的,所以?您现在可以这样做,效果很好。
  • 对不起,我只是在测试。很抱歉你是完全正确的:我没有看到任何情况下你可能需要 python 中的函数原型。
猜你喜欢
  • 2012-01-19
  • 1970-01-01
  • 2010-10-06
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
相关资源
最近更新 更多