Я пишу простую тестовую программу на python как часть моей большой программы, но я хотел бы передать имя подфункции в основную функцию, чтобы основная функция могла запустить подфункцию.
Например:
import datetime;
def cronjob(repeat, interval, task):
if (str(repeat) == 'inf'):
repeat = 99999999999999999999;
position = 0;
interval = datetime.timedelta(seconds=interval);
x = datetime.datetime.now()
while not (position >= repeat):
while (datetime.datetime.now() - x < interval):
pass;
x = datetime.datetime.now();
position += 1;
exec task;
def test():
print "hello";
cronjob(10, 0.1, 'test');
РЕДАКТИРОВАТЬ: Это уже исправлено, но, поскольку здесь ничего не указано, позвольте мне показать вам, как это сделать на случай, если это кому-то еще нужно.() и exec, и попытался просто eval (задача).это не выдало ошибку, поэтому я попытался распечатать eval (задачу) и, конечно же, в нем был указан адрес памяти функции [то есть test ()].наконец, я использовал eval (задачу);затем вызвать эту функцию.ниже код, исправляющий это:
import datetime;
def cronjob(repeat, interval, task):
if (str(repeat) == 'inf'):
repeat = 99999999999999999999;
position = 0;
interval = datetime.timedelta(seconds=interval);
x = datetime.datetime.now()
while not (position >= repeat):
while (datetime.datetime.now() - x < interval):
pass;
x = datetime.datetime.now();
position += 1;
eval(task);
def test():
print "hello";
cronjob(10, 0.1, 'test()');