'module' 调用同一文件夹中定义的另一个函数时对象不可调用

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

我指的是 this question 从另一个 Python 文件调用 Python 函数。

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

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

def mySqrt(x):
    return x**2

...然后我尝试在我的 caller.py 中使用这个函数,像这样:

import myFunc as mySqrt

a = mySqrt(2)
print(a)

...但是 returns:

'module' object is not callable

...当执行脚本 caller.py 时。

我做错了什么?

你有什么:

import myFunc as mySqrt

导入模块并给它一个不同的名称。

你想要:

from myFunc import mySqrt

如您提到的问题所述,使用:

from myFunc import mySqrt

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

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

这是你应该拥有的:

from myFunc import mySqrt

解释:

  • import <module> as <module_alias>

此指令在名称 <module_alias> 下导入 <module>

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

  • from <module> import <function>

此指令从 <module> 导入 <function>

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

您正在为您的导入指定一个与您要调用的函数同名的别名。尝试:

from myFunc import mySqrt

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

import myFunc as mf

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