【问题标题】:A first use of python function第一次使用python函数
【发布时间】:2017-12-13 21:50:29
【问题描述】:

很抱歉这个非常愚蠢的问题。我是 python 的自学初学者,在使用和调用函数时遇到问题。我来自 MATLAB 背景,所以我正在尝试做类似的事情。

使用的工具:Linux 环境中的 Python 2

作为测试,我在一个名为 prthis.py 的文件中创建了一个名为 prthis(用于“打印此”)的函数。这个函数只是将一个数字作为输入,然后输出两个数字,分别是同一个数字和它的平方。我是这样定义的:

#----------------------------------------
# content of the file prthis.py
#----------------------------------------

def prthis(x):

    y=x*x

    nb=x 

    return (y, nb)
#------------------------------------------

然后,在 python 提示符下,我尝试调用新创建的 prthis 函数,我这样做:

>>> import prthis

>>> g,t = prthis(7)

导入似乎成功,但是当我在两个名为 g 和 t 的输出变量上尝试该函数时,如上所示,我收到以下错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable

也许我的想法过于 MATLAB 化了。有人对如何处理这个问题有建议吗?

PS:这是我在 stackexchange 上的第一个问题,所以请告诉我如何感谢/接受其他用户的宝贵答案?我不想在那些愿意提供帮助的人面前显得忘恩负义。

【问题讨论】:

  • 当你使用import [module]时,调用它的函数时你仍然需要使用模块的名字——试试g,t = prthis.prthis(7)
  • 您正在尝试调用 模块。你需要做prthis.prthis(7)而不是做import prthis,做from prthis import prthis
  • 这是accepting answers的指南
  • 如果您将函数命名为其他名称,例如 printthis,您可以通过 prthis.printthis(7)from prthis import printthis 调用它。如果选择第二种方式,则只能使用prthis.py中的函数printhis,不会导入其他函数或类。

标签: python


【解决方案1】:

您正在导入一个模块,而不是函数。如果你只想导入函数,你可以这样做:

from prthis import prthis
g,t = prthis(7)

但是如果你导入完整的模块,你还必须定义你调用函数的模块:

import prthis
g,t = prthis.prthis(7)

【讨论】:

    【解决方案2】:

    您可以成功导入 prthis,但这不是正确的方法,您应该尝试“从 prthis 导入 prthis。请参阅此内容以更好地了解调用函数。 What does it mean to "call" a function in Python?

    【讨论】:

    • 这个问题根本没有解决导入模块的问题,这是 OP 遇到的问题。
    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多