Python:从不同的def调用def

时间:2015-01-21 01:00:28

标签: python

我对Python比较陌生,而且我一直坚持看似非常微不足道的事情,所以希望有人可以提供帮助。

我尝试做的是在Python中调用方法内部的方法。我想用各种不同的方法多次调用这种方法,所以如果我要使用它10次,我不想继续复制和粘贴代码 - 只是为了保持称那是" def"。

我尝试了以下内容:

return anotherMethod()

任何想法如何做到这一点?!

谢谢!

编辑: 对此问题含糊不清感到抱歉。我试图理解术语。

def scaleC():

   pianoIcon = Icon("PianoScaleC.png")
   d1 = Display("iPiano", pianoIcon.getWidth(), pianoIcon.getHeight())
   d1.add(pianoIcon)
   return piano()

def scaleCS():

    pianoIcon = Icon("PianoScaleCS.png")
    d1 = Display("iPiano", pianoIcon.getWidth(), pianoIcon.getHeight())
    d1.add(pianoIcon)
    return piano()

def piano:
#play the piano keys, etc

5 个答案:

答案 0 :(得分:0)

所以你正在做这样的事情?:

def my_global_function():
    def my_local_function():
        print('hello world')

    my_local_function()

然后在那个定义之外你想再次调用该函数? 但它已被破坏,因为你退出了范围。

你可以把它变成全球性的:

my_local_function_global_scope = None

def my_global_function():
    def my_local_function():
        print('hello world')

    # Declare variable space as global and assign to it
    global my_local_function_global_scope
    my_local_function_global_scope = my_local_function

    my_local_function()

my_local_function_global_scope()

答案 1 :(得分:-1)

你想要调用相同的函数/方法十次吗?在循环中做到吗?

for i in range(10):
    print('Iteration Number %s' % i)
    anotherMethod()

如果要在列表中返回函数的结果十次,可以使用 list comprehension

return [anotherMethod() for _ in range(10)]

注意:_变量是一个约定,当您需要进行赋值但不想存储该变量时,{I}命名它将有效地删除它,因为我理解。

我的最后一个想法是你要引用一次调用并调用它十次。你也可以这样做(这是我最喜欢的python之一)

_

答案 2 :(得分:-1)

如果您询问如何在Python中定义可以从任何地方调用的方法,您可以在library.py文件上编写所需的方法,如下所示:

def fun(a , b):
    return a + b

然后从另一个文件(即。program.py)中调用它,如下所示:

from library import fun

def main():
    # your code
    print fun(1, 2)
    a = 4
    b = 5
    c = fun(a, b)
    print c

if __name__ == '__main__': main()

这将输出:

3
9
希望有所帮助。

答案 3 :(得分:-2)

嗯,这很简单。你只需要在其他函数中调用该函数。这是一个例子:

def Examples():
    print 'Function successfully called!'

def Example()
    print 'Calling function...'
    Examples()   #This will call the function above it

Example()

你的结果应该是:

Calling function...
Function successfully called!

不应弹出任何错误,这应该有效。只需添加一个变量:

loop = 0

并将函数放在while循环中:

while loop <> 10:
    loop += 1
    def Examples():
        print 'Function successfully called!'

    def Example()
        print 'Calling function...'
        Examples()   #This will call the function above it

    Example()

这将解决您的问题。我希望这可以帮助你!您隐含的最终代码应为:

loops = 0
while loops <> 10:
    loops += 1
    def scaleC():
       pianoIcon = Icon("PianoScaleC.png")
       d1 = Display("iPiano", pianoIcon.getWidth(), pianoIcon.getHeight())
       d1.add(pianoIcon)
       piano()

    def scaleCS():

        pianoIcon = Icon("PianoScaleCS.png")
        d1 = Display("iPiano", pianoIcon.getWidth(), pianoIcon.getHeight())
        d1.add(pianoIcon)
        piano()

   def piano:
       #play the piano keys, etc

答案 4 :(得分:-2)

如果我理解你的问题,你只需要像这样使用它。

class YourClass(object):
    def method(self):
        pass # here goes your method
    def method_where_i_want_to_use_other_method(self):
        self.method()
    #other things you need in this method