在Python中在文件末尾声明函数

2024-04-29 09:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在不完全定义函数的情况下调用函数?尝试此操作时,我得到错误:“函数名未定义”。我来自C++背景,所以这个问题让我感到不安。p>

在开始工作之前声明函数:

def Kerma():
        return "energy / mass"    

print Kerma()

但是,如果在未定义函数的情况下尝试调用该函数,则会出现问题:

print Kerma()

def Kerma():
    return "energy / mass"

C++中,一旦调用了它的头,就可以在调用之后声明一个函数。

我是不是遗漏了什么


Tags: 函数声明return定义def错误情况mass
3条回答

Python中一种惯用的方式是编写:

def main():
    print Kerma()

def Kerma():
    return "energy / mass"    

if __name__ == '__main__':
    main()

这允许您按照自己喜欢的顺序编写代码,只要您在最后继续调用函数main

这在Python中是不可能的,但坦率地说,您很快就会发现根本不需要它。Pythonic编写代码的方法是将程序划分为定义类和函数的模块,以及导入所有其他模块并运行的单个“主模块”

对于简单的一次性脚本,请习惯于将“可执行部分”放在末尾,或者更好地学习使用交互式Python shell

运行Python模块(.py文件)时,其中的顶级语句将按照它们出现的顺序从上到下(从开始到结束)执行。这意味着您在定义某个内容之前不能引用它。例如,以下内容将生成所示的错误:

c = a + b  # -> NameError: name 'a' is not defined
a = 13
b = 17

与许多其他语言不同,defclass语句在Python中是可执行的,而不仅仅是声明性的,因此在发生这种情况并定义它们之前,您不能引用ab。这就是为什么第一个示例在执行Kerma()函数的def语句、处理函数体以及将结果函数对象绑定到函数名之前引用该函数时遇到问题的原因,因此在脚本中没有定义该函数

<> > C++等语言程序通常在运行前进行预处理,在编译阶段,所有的程序和它所引用的任意^ {< CD7>}文件都被同时读取和处理。与Python不同,这种语言的特点是声明性语句,允许在使用前声明(但不定义)函数的名称和调用序列(或静态类型的变量),这样当编译器遇到它们的名称时,它就有足够的信息来检查它们的用法,这主要涉及类型检查和类型转换,所有这些都不需要定义它们的实际内容或代码体

相关问题 更多 >