LINUX.ORG.RU

Python, вызов функции по имени в строковой переменной

 


1

1

Название не совсем правильное, т.к. не знал как назвать. Дело вот в чём, начинаю изучать классы в python и столкнулся с проблемой. Допустим есть модуль ololo, в котором есть функция, которая должна обрабатываться в другой функции, имя которой я передаю через параметр.

файл main

import ololo

ololo.func1('func2')

def func2:
    print 'func2'

модуль ololo:

def func1(funcname): 
    return globals()[funcname]()
Так вот, как сделать чтобы в ololo можно было вызвать функцию, которая находится в main?)

Ответ на: комментарий от tailgunner

Ну во первых у функции есть параметры, а во вторых мне имя функции отдельно нужно ещё. Да и проблема не в этом же

WiseAlex
() автор топика
Ответ на: комментарий от WiseAlex

Ну во первых у функции есть параметры

В твоем примере их нет. Но, если они есть, подставь их в вызов - никаких проблем.

Да и проблема не в этом же

Пока ты не объяснишь, в чем проблема, тебе никто не поможет.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ну я вроде объяснил в чём, видимо непонятно)

Когда функция выполняется в ololo и вызывается функция из main, то её как я понял не видно в ololo)

WiseAlex
() автор топика
Ответ на: комментарий от aedeph_

Ну так в том то и дело, что нет. модуль ololo импортирован в main, хорошо бы обработать функцию из ololo в main.

WiseAlex
() автор топика
Ответ на: комментарий от WiseAlex

Ну я вроде объяснил в чём, видимо непонятно)

Я думаю, ты и сам не понимаешь, чего хочешь. Попробуй выполнить тот вариант кода, что я дал.

tailgunner ★★★★★
()
aiv@aivbook:~/tmp$ cat > ololo.py
def f(g): print g.func_name; g()
aiv@aivbook:~/tmp$ cat > main.py
import ololo
def f_main(): print 12345
ololo.f(f_main)
aiv@aivbook:~/tmp$ python main.py 
f_main
12345
AIv ★★★★★
()
Ответ на: комментарий от Virtuos86

Чё портить то? Мне нужно работать с модулем независимо от него, т.е. ничего в нём не меняя. Для этого оно и нужно было.

WiseAlex
() автор топика
Ответ на: комментарий от WiseAlex

Функции в питоне первоклассные, её и передавай.
aedeph_ (01.05.2013 13:46:48)

Первоклассные? Это как?)
WiseAlex (01.05.2013 13:47:31)


Что функции в питоне first class object надо бы знать. Ну и в целом, по ответам в треде видно, что «плаваешь». А значит, быдлокодить будешь :/.

И я тебя не оскорбить хотел, а дать понять советчику, что для тебя полезнее было бы самому нарыть ответ, глядишь, какие вещи уяснил бы себе, знание языка подтянул.

Virtuos86 ★★★★★
()
Ответ на: комментарий от anonymous

Устаревшая, но ничего лучше (по стилю изложения) пока увы не написано. ИМНО.

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.