【问题标题】:'module' object is not callable when calling another function defined in the same folder调用同一文件夹中定义的另一个函数时,“模块”对象不可调用
【发布时间】:2018-03-07 14:33:03
【问题描述】:

我指的是 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 被执行时。

我在这里做错了什么?

【问题讨论】:

  • from myFunc import mySqrt -- 试试这个

标签: python function call


【解决方案1】:

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

from myFunc import mySqrt

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

import myFunc as mf

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

【讨论】:

    【解决方案2】:

    你有什么:

    import myFunc as mySqrt
    

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

    你想要:

    from myFunc import mySqrt
    

    【讨论】:

      【解决方案3】:

      正如你提到的问题所说,使用:

      from myFunc import mySqrt
      

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

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

      【讨论】:

        【解决方案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(),这就是您要寻找的行为。

        【讨论】:

        • 感谢您的解释。非常好。
        猜你喜欢
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 2019-04-18
        • 2021-06-18
        相关资源
        最近更新 更多