Question Comment briser une longue déclaration en python


J'ai une ligne de code en python comme ceci:

with long_name_function(p) as a, other_long_name_function():

et je veux le casser en plusieurs lignes, parce que c'est trop long, je pourrais utiliser des barres obliques inverses, mais elles sont considérées comme une mauvaise pratique. Je pourrais aussi utiliser contextlib.nested, mais est déconseillé, existe-t-il une autre alternative?


15
2018-04-18 10:06


origine


Réponses:


Cela ne tient pas compte de la prémisse de la question, mais je recommande en fait d'utiliser des barres obliques inverses dans ce cas:

with really_really_long_name_function(p) as f1, \
        other_really_really_long_name_function() as f2:
    pass

Comme l'a dit @JonClements, vous ne pouvez pas utiliser de crochets ou de virgules dans ce cas, il n'y a pas d'alternative, les barres obliques inverses sont la voie à suivre et le code semble assez propre.


20
2018-04-18 10:17



Si vous voulez éviter les barres obliques inverses, vous pouvez alias les noms longs:

lnf = long_name_function
olnf = other_long_name_function
with lnf(p) as a, olnf():
    # ...

ou vous pouvez imbriquer les déclarations:

with long_name_function(p) as a:
    with other_long_name_function():
        pass

Tu fais ne pas veux utiliser contextlib.nested(); il y a plusieurs problèmes avec cela qui a directement conduit à sa dépréciation. Les gestionnaires de contexte antérieurs ne sont pas couverts pour les problèmes liés aux gestionnaires de contexte ultérieurs dans l'imbrication, par exemple.


12
2018-04-18 10:08