il sagit du langage python, l'extrait de code qui contient le mot clé yield, permet de fair de la projection,
def apply_perspective(points, camera_pos, viewer_pos):
#http://en.wikipedia.org/wiki/3D_projection#Perspective_projection
a, b, c = viewer_pos
d, e, f = camera_pos
for p in points:
x, y, z = p
x, y, z = x - d, y - e, z - f
t4 = a/x
yield (b - t4*y, c - t4*z)
Return, ça te retourne une fois une valeur (ou des valeurs avec une liste, tableau, etc). Yield lui tu peux voir un peu comme une "boucle de return", il va te retourner une valeur a chaque itération.
"exécution de la fonction et renvoie une valeur à l'appelant, mais conserve suffisamment d'état pour permettre à la fonction de reprendre là où elle a été laissée. Une fois reprise, la fonction continue l'exécution immédiatement après la dernière exécution. Cela permet à son code de produire une série de valeurs dans le temps, plutôt de les calculer en une fois et de les renvoyer comme une liste."
C'est souvent utilisé lors de calculs, de ce que j'ai vu. Ca évite de garder pas mal de chose en mémoire. Je ne l'ai pas souvent utilisé, mais si tu te forme à python je pense que c'est une des bonnes pratiques à prendre.
def TonCalcul():
i = 1;
while True:
yield i*i
i += 1 # La prochaine exécution reprendra d'ici
# Dans ton programme
for valeur in TonCalcul():
if valeur > 50:
break
print(valeur)
Tu peux regarder ce tutoriel, en particulier les chapitres sur les conteneurs et les itérables. Que veux-tu dire par itérer les float ? Un exemple peut-être de ce que tu voudrais faire.
>>> a = 1.23
>>> tuple(a)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
tuple(a)
TypeError: 'float' object is not iterable
>>>
Et tu voudrais que ça te donne quoi comme résultat, un tuple à un élément ? Si c'est le cas, alors (1.23,) te donne le résultat voulu. tuple(x) attend que x soit itérable et crée un tuple dont les éléments sont tous les éléments sur lesquels on itère avec x (donc tous les éléments de x).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Try->Fail->Learn->Converge to success :
Try->Fail->Learn->Converge to success :