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

时间:2018-03-07 14:33:03

标签: python function call

我指的是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)

...但它返回:

  

'module'对象不可调用

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

我在这里做错了什么?

4 个答案:

答案 0 :(得分:2)

你有什么:

import myFunc as mySqrt

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

你想:

from myFunc import mySqrt

答案 1 :(得分:2)

正如您提到的问题所述:

from myFunc import mySqrt

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

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

答案 2 :(得分:2)

这是你应该拥有的:

from myFunc import mySqrt

说明:

  • import <module> as <module_alias>

此指令以<module>名称导入<module_alias>

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

  • from <module> import <function>

此说明从<function>导入<module>

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

答案 3 :(得分:2)

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

from myFunc import mySqrt

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

import myFunc as mf

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