2015-10-05 295 views
0

我看到了另外两个这样的问题,但他们没有工作...如何在函数中调用函数?

所以我的问题是,我有一个函数,我做了另一个我需要调用第一个函数。我没有Python的经验,但我知道只要在同一个目录中,像Matlab这样的语言是可能的。

一个基本的例子:

def square(x): 
square = x * x 

(和保存)

现在在我的新功能,我想使用的功能方 我想:

def something (y, z) 
    import square 
    something = square(y) + square(z) 
    return something 

其中显示:建宏.TypeError:'模块'对象不可调用

什么是sh我该怎么办?

+0

如果在同一个文件,你可以调用函数 –

+0

只是不导入。只有模块被导入。您似乎碰巧有一个名为'square'的模块,您可以导入该模块,然后覆盖相同名称的函数的名称。 Python中通常不会将每个函数放在自己的文件中(因此也就是模块)。只需将所有功能放在一个文件(模块)中即可。模块仅用于您有非常大的逻辑上不适合一件事的结构。 – Alfe

回答

1

如果,当且仅当你有一个square模块定义的square功能,那么你应该看看从中导入简单的名称来代替。

from square import square 

如果你不想改变什么,那么你需要使用它的全名:

something = square.square(y) + square.square(z) 

该模块的名称是square,你不能调用模块的功能。

+0

非常感谢! –

0

你有几个选择。

  1. 将所有内容放在一个文件中。那么你只需要调用另一个函数;然后忘掉所有的import

  2. square函数放入不同的文件中, G。 foo.py。那你的使用功能需要import呢。为此,您再次有两个选项:import foo并使用foo.square(y)from foo import square并使用square(y)。 (您可以命名你的模块您的函数,以及 - 两个具有独立的名字空间 - 这样的话,你就必须from square import square

模块(即在一个单独的文件)用于逻辑分组连接在一起的东西,例如, G。所有数学函数,所有操作系统相关的东西,所有随机数生成器相关的东西等等。所以在你看起来像第一次测试的情况下,我建议将所有内容放在一个文件中,并忘记所有的import

0

2的方式来使用函数内的其他:

  1. 您在其他.py文件中定义日square()功能(ex: myfile.py)和比,你可以导入的功能是这样的:
from myfile import square 

def newFunction(): 
    square() 
  1. 您可以在同一个文件中定义功能,而不需要import,您可以直接使用square()
0

如果它在同一个文件中,则不需要import

只需拨打something函数中的square即可。

def square(x): 
    square = x * x 
    return square 

def something (y, z) 
    something = square(y) + square(z) 
    return something 

更简单地说:

def square(x): 
    return x * x 

def something (y, z) 
    return square(y) + square(z) 
相关问题