在没有完全定义函数的情况下调用它是可能的吗?尝试此操作时,出现错误:“函数名未定义”。我来自C++背景,所以这个问题使我感到难堪。
在工作前声明函数:
def Kerma():
return "energy / mass"
print Kerma()
但是,尝试在未首先定义函数的情况下调用该函数会带来麻烦:
print Kerma()
def Kerma():
return "energy / mass"
在C++中,一旦调用了它的头,就可以在调用之后声明一个函数。
我是不是丢了什么东西?
Tags:
当运行Python模块(.py文件)时,其中的顶级语句将按它们出现的顺序从上到下(从开始到结束)执行。这意味着在定义某个东西之前,不能引用它。例如,下面将生成显示的错误:
与许多其他语言不同,
<> > C++等语言程序通常在运行前进行预处理,在编译阶段,所有的程序和它所引用的任意^ {< CD7>}文件都被同时读取和处理。与Python不同,这种语言的特点是声明性语句,允许在使用之前声明函数的名称和调用序列(或静态类型的变量),这样当编译器遇到它们的名称时,它就有足够的信息来检查它们的使用,这主要包括类型检查和类型转换,它们都不需要定义它们的实际内容或代码体。def
和class
语句在Python中是可执行的,而不仅仅是声明性的,因此在发生这种情况并定义它们之前,不能引用a
或b
。这就是为什么您的第一个示例在执行Kerma()
函数的def
语句并处理了body和绑定到函数名的结果函数对象之前,无法引用该函数,因此在脚本中该点未定义该函数。在Python中有一种惯用的方法是编写:
这允许您按照您喜欢的顺序编写代码,只要您一直在最后调用函数
main
。这在Python中是不可能的,但坦白地说,您很快就会发现根本不需要它。编写代码的Pythonic方法是将程序划分为定义类和函数的模块,以及一个导入所有其他模块并运行的“主模块”。
对于简单的废弃脚本,请习惯于将“可执行部分”放在末尾,或者更好的方法是,学习使用交互式Python shell。
相关问题 更多 >
编程相关推荐