2014-10-09 6 views
1

У меня есть относительно большая программа, которую я разделил на модули - в результате существует много перекрытий между функциями в разных модулях, которые я сейчас работаю над удалением.вызов функции, переданной как аргумент без круглых скобок

Одна из проблем, с которыми я столкнулся, - это необходимость передавать функции и классы в качестве аргументов другим функциям и классам - прежде чем они будут определены.

Я знаю, что могу передать имя функции в виде строки и использовать exec(), я мог бы также теоретически использовать словари со стандартизованными ключами. Однако я хочу знать, как вызвать функцию, просто используя ее как объект в аргументах других функций.

Я знаю, что несколько функций и классов принимают беспочвенные функции в виде аргументов и вызывают их, поэтому я уверен, что это возможно. вопрос в том, как?

основным примером может быть:

def func1(some_function): 
    #call some_function here 

и в отдельном модуле:

def func2(): 
    print("Success!") 

конечный результат будет:

>>>func1(func2) 
'Success!' 

Я использую Python 3.4. Я также предполагаю, что работа для функций будет работать для классов.

+4

Try some_function() – Phillip

+0

ничего себе, что просто ... надо любить Гвидо! – Scironic

ответ

2
def func1(some_function): 
    #call some_function here 

просто становится

def func1(some_function): 
    some_function() 

Функции первого класса объектов в Python.

+0

Пошел с этим в конце. Благодаря! – Scironic

1

Вот это то, что я сделал, грубой вы можете заменить a для любого имени

def func1(): 
    return "ess" 
def func2(x): 
    return "succ" + x 

a = func1() 

print func2(a) 
Смежные вопросы