Imaginons ce code:

    try:
        if condition1 and condition2: # some_exception may happen here
            function1()
        elif condition3 and condition4: # some_exception may happen here
            function2()
        else:
            big
            block
            of
            instructions
    except some_exception:
        big
        block
        of
        instructions

Comme vous pouvez le voir, je répète un gros bloc d'instructions (les deux sont identiques). Existe-t-il un moyen d'éviter la répétition, mais quelque chose de différent que de mettre le code dans une fonction?

Une sorte de logique différente ou en utilisant finalement ou sinon pour essayer? Je ne peux tout simplement pas le comprendre.

Merci d'avance de m'avoir aidé!

2
maslak 14 mars 2019 à 22:17

2 réponses

Meilleure réponse

Si vous êtes opposé à l'utilisation d'une fonction, pourquoi ne pas définir une variable aux deux endroits et la vérifier plus tard?

Quelque chose comme ça:

do_stuff = False
try:
    if condition1 and condition2: # some_exception may happen here
        function1()
    elif condition3 and condition4: # some_exception may happen here
        function2()
    else:
        do_stuff = True
except some_exception:
    do_stuff = True
    ...

if do_stuff:
    big
    block
    of
    instructions
6
khelwood 14 mars 2019 à 19:21
try:
    if condition1 and condition2: # some_exception may happen here
        function1()
    elif condition3 and condition4: # some_exception may happen here
        function2()
    else:
         raise some_exception('This is the exception you expect to handle')
except some_exception:
    big
    block
    of
    instructions

Et ça ?

Changé d'augmenter comme suggéré par Kaelwood

1
Mohit Sharma 14 mars 2019 à 19:47