2015-10-05 156 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) 
相關問題