Difference between revisions of "Python:Control structures"

From wiki
Jump to navigation Jump to search
Line 65: Line 65:
  
 
A full list of exception-types can be found in the [https://docs.python.org/3/library/exceptions.html#exception-hierarchy python docs]
 
A full list of exception-types can be found in the [https://docs.python.org/3/library/exceptions.html#exception-hierarchy python docs]
 +
 +
 +
==userWarnings==
 +
Warnings are a subcategory of Exceptions for problems that do not break the script. E.g. for deprecated modules.
 +
 +
Once you have seen the warning and have decided you want to use the code as is and not bother the end user with the warning messages you can suppress the warnings like:
 +
<syntaxhighlight lang=python>
 +
import warnings
 +
...
 +
...
 +
warnings.simplefilter(action='ignore', category=UserWarning)
 +
<code that throws warning>
 +
warnings.resetwarnings()
 +
</syntaxhighlight>
 +
 +
This way the warning settings are restored after the known one has been passed

Revision as of 10:44, 20 October 2023


Most flow control is standard. Indentation defines the code block to execute. You must be strict, all indents must be the same in a block, a mix of spaces and tabs is not allowed (unless each line uses the same mix).

You can define you own Python:Functions too.

if expression:
    block
elif expression:
    block
else:
    otherblock

for var1 in itterable:  # keys if itterable is a dict
    block
    if somethinghappens:
        break

while expression:
    block
    if somethinghappens:
        continue
break
Stop looping immediately. Jump to the next statement after the loop.
continue
Stop the current iteration immediately and jump the the top of the loop, do the next iteration.
pass
No operation, use e.g. to avoid negative tests
var1 = ( x if <condition1> elif <condition2> y else z )
Different way to assign a value conditionally. () only needed if spread over more lines.


Exception handling

To catch exceptions:

try:
    blockthatmaythowexception
except <exception>:
    blockifexceptionisthrown
except <exception2> as ex:
    blockifexception2isthrown
else:
    blockif_NO_exceptionisthrown

NOTE: elif is not allowed here.

Specifying an exception is optional but highly recommended (Easier to ask for forgiveness than permission aka EAFP) and it is said to be faster. However, take care you don't forgive real faults.

If more exceptions are defined with 1 try only 1 exception block will be executed,

except <exception> as ex
Puts the exception result in ex. ex.message has the reason for the exception.
except NameError
The variable does not exist
except KeyError
The key does not exist in the dict
except IndexError
The index does not exist in the list

A full list of exception-types can be found in the python docs


userWarnings

Warnings are a subcategory of Exceptions for problems that do not break the script. E.g. for deprecated modules.

Once you have seen the warning and have decided you want to use the code as is and not bother the end user with the warning messages you can suppress the warnings like:

import warnings
...
...
warnings.simplefilter(action='ignore', category=UserWarning)
<code that throws warning>
warnings.resetwarnings()

This way the warning settings are restored after the known one has been passed