Disclaimer : Je vais faire de la grosse vulgarisation, ça ne va pas être précis, ça va être raconté avec les mains, mais à ton niveau, tu n'en verras pas les implications.
Il y a plusieurs choses à voir lors de l'appel :
rectangle (scie(100,10), scie(200,10))
D'abord il y a reconnaissance d'un motif d'appel de fonction avec ses paramètres :
rectangle (expa, expb)
Les valeurs de expa et expb ont besoin d'être connues avant d'évaluer rectangle().
expa est aussi un appel : scie(expc,expd), dont les paramètres expc et expd sont facilement évaluables à l'oeil nu : 100 et 10, deux valeurs entières.
L'appel a scie peut être simplement décomposé :
Tant qu'un compteur, démarré à 0 et incrémenté de 1 à chaque tour de boucle est inférieur au premier paramètre d'appel (longT), un curseur de dessin fait une rotation de 60° vers la gauche, dessine un trait ayant pour longueur le second paramètre de scie (long), fait une rotation de 120° vers la droite, et dessine un autre trait de même longueur, puis effectue encore une rotation de 60° vers la gauche (et retrouve ainsi son orientation initiale). Ce motif dessine une dent de scie, d'où le nom de la fonction, répétée longT fois, chaque dent a une arête de longueur long.
scie ne renvoie aucune valeur avec le mot clé return, la valeur de retour est donc implicitement None.
Donc, pour évaluer l'appel rectangle (scie(100,10), scie(200,10)), on évalue d'abord deux appels à scie, le premier dessine une scie de longueur 100, l'autre une scie de longueur 200.
En fait, cet appel est équivalent à :
a = scie(100,10) # Dessine une scie de longueur 100
b = scie(200,10) # Dessine une scie de longueur 200
rectangle(a, b) # Crashe pitoyablement
Les valeurs dans a et b (ceci est une grosse approximation conceptuelle, en réalité, cela s'approcherait plus de deux étiquettes a et b qu'on aurait attachées aux valeurs) sont None et None...
...on peut donc se demander ce que fait rectangle(None,None) ? Ceci, je te le laisse à titre d'exercice.
Quand même un indice : ce que tu souhaites probablement, c'est écrire une fonction rectangle qui s'utilise comme ceci :
rectangle(longueur_rectangle, largeur_rectangle, longueur_arete_scie)
Et que cette fonction utilise scie pour dessiner un rectangle de cotés longueur_rectangle et largeur_rectangle.
Ce n'est pas ce que tu as fait, tu as appelé rectangle(dessiner une scie, dessiner une scie).