7
votes

Est-il possible de mettre fin à un module Python Importer avec quelque chose comme un retour?

J'aimerais savoir s'il existe une façon d'écrire le code de module ci-dessous sans avoir à ajouter un autre niveau d'indentation tout le code du module.

# module code
if condition:
    # here I need something like a `return`
# rest of the module code (big)


5 commentaires

Je ne connais aucune solution à cela, mais je suppose que vous pouvez mettre tout votre code dans un module interne et importer que si la condition n'est pas remplie.


@Unclezeiv: C'est une bonne idée, vous devriez le poster comme une réponse!


Qu'est-ce qui est avec l'aversion à l'indentation?


@Tokenmacguy OK, fait ça, acclamations.


@AustinMarshall: Stackoverflow.com/a/8421045/880783


3 Réponses :


2
votes

Je ne sais aucun moyen de le faire. La seule chose que je pouvais imaginer que cela fonctionnerait serait retour mais qui doit être dans une fonction.


0 commentaires

5
votes

Je ne connais aucune solution à cela, mais je suppose que vous pouvez mettre tout votre code dans un module interne et importer que si la condition n'est pas remplie.


1 commentaires

Merci, si personne ne vient avec une meilleure idée en quelques jours, cela reste la bonne réponse.



-1
votes

C'est super difficile à dire sans savoir quel est votre objectif de niveau supérieur. (Par exemple, quelle est la condition? Pourquoi cela compte-import-il? Êtes-vous mort sûr que vous n'avez pas de problème xy ici? Vous ne pouvez pas simplement nous dire quel est votre objectif global?) Il est également vraiment difficile de dire sans savoir sans savoir sans savoir sans savoir sans savoir Comment le module va être appelé. (En tant que script de la ligne de commande? En étant importé par un autre module?) Et cela aiderait beaucoup à savoir (a) pourquoi vous essayez d'éviter l'indentation (la Seconde Guerre mondiale est terminée et que nous n'avons pas besoin d'espaces de rationnement plus; ou, pour le mettre plus bonblement, Python est une langue qui utilise une indentation comme une caractéristique syntaxique, disant donc "je ne peux pas utiliser cette fonctionnalité syntaxique" frappe de nombreuses personnes comme une contrainte étrange. C'est comme abandonner si -en TESTS: Vous pourriez peut-être théoriquement de travailler autour de cette contrainte, parfois, parfois, mais pourquoi allez-vous dans la bague de boxe avec vos mains attachées derrière votre dos?), et (b) pourquoi vous ne pouvez pas jeter une exception (non , vraiment: Êtes-vous totalement sûr que vous ne pouvez absolument pas jeter d'exception du tout?).

tel qu'il est, tout ce que vous avez réellement fait est de demander à un "Comment puis-je faire x, donné des conditions A, B et C?" question, sans indiquer pourquoi vous voulez faire x, ou pourquoi des conditions A, B et C existent, ou même si vous êtes sûr à 100% d'exister et que vous ne pouvez pas être travaillé.

Si ce que vous dites vraiment, c'est "Je ne veux pas frapper {onglet} 40 fois en écrivant une fonction", le problème réel est que vous avez besoin d'un meilleur éditeur de texte. Si ce que vous dites vraiment, c'est que «je trouve une indentation d'être esthétiquement désagréable», alors vous devriez penser à (a) ce que l'autre côté de l'argument est; C'est-à-dire pourquoi les personnes utilisent l'utilisation de l'indentation de Python en tant que syntaxe à être utiles; (b) si vos propres préférences esthétiques à cet égard sont plus importantes que les raisons que vous avez proposées dans (A); et (c) que ce soit, étant donné ces choses, Python est le bon outil pour que vous utilisiez personnellement pour accomplir tout votre choix à plus grande échelle. (Il est correct de ne pas aimer l'indentation comme une caractéristique syntaxique; mais c'est tellement fondamental à Python qui l'opposant à la philosophie à cela dans une certaine mesure que le règlement est une indication forte que Python n'est peut-être pas la langue idéale pour accomplir votre programmation. Objectifs in.) Si ce que vous dites vraiment, c'est que vous bénéficierez d'un code d'affacturage qui doit être exécuté sous deux décors de circonstances en deux modules, cela vous aiderait à refacteur. Si ce que vous dites, c'est que vous avez un code de spaghetti qui allume totalement impossible au refacteur, c'est vraiment le premier problème à adresser, avant d'essayer d'abandonner les importations de module.


0 commentaires