As instruções compostas do Python podem ser as instruções seguintes, definidas usando a sintaxe BNF:
- if
if_stmt ::= "if" expression ":" suite ( "elif" expression ":" suite )* ["else" ":" suite]
- while
while_stmt ::= "while" expression ":" suite ["else" ":" suite]
- for
for_stmt ::= "for" target_list "in" expression_list ":" suite ["else" ":" suite]
- try
try_stmt ::= try1_stmt | try2_stmt try1_stmt ::= "try" ":" suite ("except" [expression [("as" | ",") identifier]] ":" suite)+ ["else" ":" suite] ["finally" ":" suite] try2_stmt ::= "try" ":" suite "finally" ":" suite
- with
with_stmt ::= "with" with_item ("," with_item)* ":" suite with_item ::= expression ["as" target]
- definição de funções
decorated ::= decorators (classdef | funcdef) decorators ::= decorator+ decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE funcdef ::= "def" funcname "(" [parameter_list] ")" ":" suite dotted_name ::= identifier ("." identifier)* parameter_list ::= (defparameter ",")* ( "*" identifier ["," "**" identifier] | "**" identifier | defparameter [","] ) defparameter ::= parameter ["=" expression] sublist ::= parameter ("," parameter)* [","] parameter ::= identifier | "(" sublist ")" funcname ::= identifier
- definição declasses
classdef ::= "class" classname [inheritance] ":" suite inheritance ::= "(" [expression_list] ")" classname ::= identifier
Exemplo do try – finally
>>> def f(): ... a = "Not a number" ... try: ... a = 1/0 ... finally: ... return a ... >>> f() 'Not a number' >>> >>> def g(): ... a = "Not a number" ... try: ... a = 10/3 ... finally: ... return a ... >>> g() 3
Exemplo de aplicação da instrução for
>>> a=range(10) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> for x in a[:]: ... if x > 3: a.remove(x) ... >>> a [0, 1, 2, 3]