关于python:调用同一文件夹中定义的另一个函数时,’module’对象不可调用

'module' object is not callable when calling another function defined in the same folder

我提到这个问题是为了从另一个python文件调用python函数。

所以我在同一个文件夹中有两个python脚本:myFunc.pycaller.py

首先,我在myFunc.py中定义了一个简单函数,如下所示:

1
2
def mySqrt(x):
    return x**2

…然后我尝试在我的caller.py中使用这个函数,如下所示:

1
2
3
4
import myFunc as mySqrt

a = mySqrt(2)
print(a)

…但它返回:

'module' object is not callable

…执行脚本caller.py时。

我在这里做错什么了?


您正在为导入提供与要调用的函数同名的别名。尝试:

1
from myFunc import mySqrt

或者,如果要保持相同的格式,请尝试:

1
2
3
4
import myFunc as mf

a = mf.mySqrt(2)
print(a)


以下是您应该拥有的:

1
from myFunc import mySqrt

号说明:

  • 埃多克斯1〔2〕

本指令以的名义导入

因此,import myFunc as mySqrt将以mySqrt的名称导入模块myFunc,这不是您想要的!

  • 埃多克斯1〔8〕

本说明书从进口

因此,from myFunc import mySqrt将从您的模块myFunc中导入函数mySqrt(),这是您正在寻找的行为。


正如您提到的问题所使用的:

1
from myFunc import mySqrt

as用于为模块创建alias,因此可以缩短键入时间,如下例所示:

1
2
3
4
from myFunc import mySqrt as ms
a = ms(2)
print(a)
#4


你拥有的:

1
import myFunc as mySqrt

导入模块并为其指定不同的名称。

你想要:

1
from myFunc import mySqrt