当我们导入模块时,我们是否有Python中的方法?

当我们导入模块时,我们是否有Python中的方法?,python,methods,module,Python,Methods,Module,因此,问题基本上是: 我有一个名为Fibo的模块,它有一个名为fibonacci()的函数,用于计算fibonacci序列。因为我想在我的程序中使用它,我必须这样做: 导入Fibo Fibo.fibonacci() 但这最后一行不是一个使用fibonacci方法的对象,或者实际上是?在官方文档中,您可以找到答案 归结起来就是: 当第一次导入模块时,Python搜索该模块,如果找到,它将创建一个模块对象1,并对其进行初始化 所以基本上,Fibo是一个对象。Python中的所有东西都是一个对象。如

因此,问题基本上是:

我有一个名为
Fibo
的模块,它有一个名为
fibonacci()
的函数,用于计算fibonacci序列。因为我想在我的程序中使用它,我必须这样做:

导入Fibo
Fibo.fibonacci()

但这最后一行不是一个使用fibonacci方法的对象,或者实际上是?

在官方文档中,您可以找到答案

归结起来就是: 当第一次导入模块时,Python搜索该模块,如果找到,它将创建一个模块对象1,并对其进行初始化


所以基本上,Fibo是一个对象。

Python中的所有东西都是一个对象。如果从模块导入对象,则该对象将位于当前/实际模块(即程序)中。通过为Python代码使用不同的文件,可以创建不同的名称空间,并使代码更有条理。这就是使用其他模块并从中导入的优点

根据Python文档,最好不要调用
fibonacci
方法,并说它是对象的属性,请参见:

在类主体内定义的函数。[……]

与使用虚线表达式按名称引用的对象关联的值。例如,如果一个对象o有一个属性a,它将被引用为o.a


python中的一切都是一个对象——因此,是的,模块就是一个对象。但是fibonacci是一个函数,而不是一个方法。(注:请注意,您可以使用Fibo import fibonacci的
直接导入该函数)。方法就是在类中定义函数时使用的,因此即使术语等于“object.method()”一,那么它也不是一个方法?不,它只是一个对象的属性,恰好是一个函数,而不是静态数据。方法总是将实例作为第一个参数接收(通常称为
self
,例如实例方法,或
cls
,对于类方法)。问题不在于模块是否为对象,而在于其成员函数是否为方法。