我使用Python CGI.在定义之前我无法调用函数.
在Oracle PL/SQL中有这种"前向声明"技巧:在顶部命名所有函数,因此定义的顺序无关紧要.
Python中也有这样的技巧吗?
例:
def do_something(ds_parameter):
helper_function(ds_parameter)
....
def helper_function(hf_parameter):
....
def main():
do_something(my_value)
main()
Run Code Online (Sandbox Code Playgroud)
大卫是对的,我的榜样是错的.关于什么:
<start of cgi-script>
def do_something(ds_parameter):
helper_function(ds_parameter)
....
def print_something():
do_something(my_value)
print_something()
def helper_function(hf_parameter):
....
def main()
....
main()
Run Code Online (Sandbox Code Playgroud)
我可以"转发声明"脚本顶部的函数吗?
S.L*_*ott 67
必须在使用任何函数之前定义所有函数.
但是,只要在任何可执行代码使用函数之前定义了所有函数,就可以按任何顺序定义函数.
您不需要"前向声明",因为所有声明都完全相互独立.只要所有声明都在所有可执行代码之前.
你有问题吗?如果是这样,请发布不起作用的代码.
在你的例子中,print_something()是不合适的.
规则: 必须在任何执行实际工作的代码之前定义所有函数
因此,将所有有效的陈述放在最后.
小智 29
更好的说明你的观点是:
def main():
print_something()
....
def do_something(ds_parameter):
helper_function(ds_parameter)
....
def print_something():
do_something(my_value)
def helper_function(hf_parameter):
....
main()
Run Code Online (Sandbox Code Playgroud)
换句话说,您可以将您的定义保持main()在顶部,以便于编辑 - 避免频繁滚动,如果大部分时间都用于编辑main.
假设您有一些代码片段在定义后调用您的函数 main,那么您的示例将按编写的方式工作。由于 Python 的解释方式,定义do_somethingdo_something 函数时不需要定义由 的主体调用的任何函数。
Python 在执行代码时将采取的步骤如下。
do_something,调用 helper_function。Python 唯一关心存在的时间helper_function是当它到达第六步时。在尝试查找 helper_function 以便调用它时引发错误之前,您应该能够验证 Python 是否已完成第六步。