2015-07-31 2 views
-3

У меня есть две функции «a» и «b». «b» вызывается, когда пользователь загружает файл. «b» переименовывает файл и возвращает новое имя файла. После этого файл должен быть отредактирован. Например:вызывающие функции в python

def a(): 
    edits file 

def b(): 
    renames file 
    return file 

Так что, если b происходит и заканчивается, предполагается, что это произойдет. После «b» returns file функция завершена и ничего не происходит после. Именно в этот момент я хочу, чтобы «а» произошло, как это возможно? Прямо сейчас я называю «а» с таймером

t=Timer(1.0,a) 
t.start() 

но это нехорошее решение. Я пытался использовать глобальные переменные, но это не сработало. Я также попробовал return file, a(), потому что я думал, что, возможно, начнется. Есть что-то вроде if b(): a()?

Любое предложение?

+3

'b(); a() 'запускает' a' после окончания 'b'. Я думаю, вы хотели спросить что-то другое здесь; просьба уточнить. – poke

+0

Нет, я хотел спросить две функции, один возвращает то, что требуется другой функции, поэтому вторая функция a() должна запускаться после b –

ответ

1

Просто позвоните a в b:

def b(): 
    ... 
    a() 

def a(): 
    ... 

b() 
+0

да, я попытался, но b возвращает значение, необходимое в a, поэтому if я вызываю a до b возвращает значение wont work –

+0

Нет проблем, присвойте это значение переменной внутри b и предоставите ее a .. – DeepSpace

1

Зов a() в b определения:

def a(file): 
    ## edit_file 

def b(file): 
    ## rename_file 
    a(file) 
    return file 
+0

b возвращает значение, которое необходимо в a, поэтому, если я вызываю a до b, возвращает value a wont work –

+0

@klausruprecht Просто передайте значение в качестве аргумента в 'a'. проверьте обновление. –

0

Вы можете легко позвонить a() изнутри b(), и вы можете сделать это так, что это будет только вызывается, если b успешно работает с несколькими точками возврата.

def a(): 
    something 

def b(): 
    something 
    if something goes wrong: 
     return None or someError 
    something 
    a() 
    return correct result 

только один return будет когда-либо работать, так что если вы тестируете и обнаружили, что b не выполняется успешно, вы можете вернуть значение (или ничего) преждевременно, так что он никогда не достигнет точки, где a называется ,

+0

, но это означает, что если что-то не пойдет не так, значение будет создано в конце b(), a(), однако, должно заранее знать значение –

+0

Каким образом? Требуется ли 'a' передать значение или для' b' изменить глобальное значение? – SuperBiasedMan

+0

файл загружается => b() вызывается, b() переименовывает файл,() редактирует файл (поэтому для a() требуется значение b() –

Смежные вопросы