On Tue, 21 Feb 2023 at 12:44, James Addison via Python-ideas < python-ideas@python.org> wrote:
> On Mon, 20 Feb 2023 at 15:03, Otomatyk dupont <otoma...@gmail.com> wrote: > >> #import A_WINDOW_MODULE and import A_UNIX_MODULE if except > > Here's an attempt to rephrase this slightly, with the following ideas in > mind: > > * Reduce parser ambiguity > * Support filtering based on specific exception classes > * Rephrase the code to read more closely like natural language > > >>> try import A_WINDOW_MODULE but import A_UNIX_MODULE on ImportError > If you really don't want to have the multi-line try...except, this is perfectly possible to implement as a function: # Put this is an "import_utilities" module if you want def best_import(*names): for name in names: try: return __import__(name) except ImportError: continue A_MODULE = best_import("A_WINDOW_MODULE", "A_UNIX_MODULE") > >>> try value = int(x[2]) but value = 0 on IndexError, ValueError > This is basically "exception handling expressions", which have been discussed and rejected many times - see https://peps.python.org/pep-0463/. Personally, I have occasionally wished I could do something like this, but by the time I've thought a bit harder and found a workaround, I usually end up thinking that the workaround is *better* than a solution with an exception handling expression would have been. So although it would be convenient for quick hacks, I basically support the rejection. In the case of this specific example, you can obviously wrap the calculation and exception handling in a function. For a one-off case, that's not worthwhile, and "toy examples" typically look like one-off cases. But in real code, you'll either be doing this a lot (and so the overhead of a function for it is worthwhile) or it will be part of a function where the exception handling will be encapsulated anyway. Paul
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/6JZUNBLQJ4ESPBWNHKGZY3GIC5YNUO67/ Code of Conduct: http://python.org/psf/codeofconduct/