Partage
  • Partager sur Facebook
  • Partager sur Twitter

Optimisation de code

16 septembre 2021 à 18:43:57

HélèneRousseau1 a écrit:

Quand je fais fonctionner la fonction toute seule cela fonctionne mais quand je l'appel dans une autre fonction, là j'ai ce problème

FindStarCenter reçoit les arguments passés par l'appelant... si  fwhm se retourne avec None, c'est que l'appelant a passé au moins 3 arguments (sinon on aurait la valeur par défaut 0).

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 16:25:13

Bonjour, merci pour votre réponse, je ne comprend pas bien ce que vous voulez dire par l'appelant à passer au moins 3 arguments.

Merci beaucoup

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 16:35:35

As-tu lu ce message ? Si tu utilises un bon pattern pour ton programme, tu devrais pouvoir utiliser le profiler.

Et sans aller jusqu'à lire des cours sur d'autres langages de programmation, parfois on peut lire quelques tips utiles.

De toute façon, vu le programme que tu fais, tu vas pas le pondre parfaitement en 2 heures.

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 17:07:39

HélèneRousseau1 a écrit:

je ne comprend pas bien ce que vous voulez dire par l'appelant à passer au moins 3 arguments.

Si j'écris:
>>> def f(a, b, c=1, d=0):
...     print(a, b, c, d)
...
>>> f(9, 9)
9 9 1 0
>>> f(9, 9, None)
9 9 None 0
>>>

vous voyez bien la différence avec un appel à 2 arguments et un appel à 3 arguments de la fonction. Il n'y a rien à comprendre, juste à réviser ce qui tourne autour des appels de fonctions, les arguments et leurs valeurs par défaut.




  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 18:06:34

mps a écrit:

HélèneRousseau1 a écrit:

je ne comprend pas bien ce que vous voulez dire par l'appelant à passer au moins 3 arguments.

Si j'écris:

>>> def f(a, b, c=1, d=0):
...     print(a, b, c, d)
...
>>> f(9, 9)
9 9 1 0
>>> f(9, 9, None)
9 9 None 0
>>>

vous voyez bien la différence avec un appel à 2 arguments et un appel à 3 arguments de la fonction. Il n'y a rien à comprendre, juste à réviser ce qui tourne autour des appels de fonctions, les arguments et leurs valeurs par défaut.




J'appelle ma fonction de cette façon ci:

FindStarCenter(test,1,fwhm = fwhm,abso = True)

Je ne comprend donc pas comment un None peut apparaître puisque que la valeur de fwhm est défini. De plus cette ligne d'appel revient dans trois de mes fonctions et l'une d'entre elle fonctionne, d'où mon incompréhension

CristianoRolando a écrit:

As-tu lu ce message ? Si tu utilises un bon pattern pour ton programme, tu devrais pouvoir utiliser le profiler.

Et sans aller jusqu'à lire des cours sur d'autres langages de programmation, parfois on peut lire quelques tips utiles.

De toute façon, vu le programme que tu fais, tu vas pas le pondre parfaitement en 2 heures.


Oui, j'ai bien vu ce message, cependant n'ayant jamais utilisé de profiler je suis en train de me familiariser avec le procédé pour pouvoir l'appliquer à mon code...

Et ça fait un peu plus de deux heures que je suis dessus --' plus comme un an...

-
Edité par HélèneRousseau1 17 septembre 2021 à 18:12:39

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 18:37:27

HélèneRousseau1 a écrit:

J'appelle ma fonction de cette façon ci:

FindStarCenter(test,1,fwhm = fwhm,abso = True)

Je ne comprend donc pas comment un None peut apparaître puisque que la valeur de fwhm est défini.

Si le code de FindStarCenter est toujours:

def FindStarCenter(cubeNod,nbpx,fwhm = 0,abso = False):
     
    Sum = np.sum(cubeNod,axis = 0)
    aperture1 = CircularAperture((0,0),r = nbpx)
    flux1 = aperture_photometry(Sum,aperture1)
    kKeep = (0,0)
    print(fwhm)
    fwhm = math.ceil(fwhm)

le print(fwhm) n'affiche que la valeur reçue (puisque rien ne lui a été assigné depuis le début de la fonction).

Ajouter un print(fwhm) avant les différents 'appels devrait montrer qu'il n'est pas toujours défini comme vous le croyez...

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2021 à 23:41:40

Le problème est résolu, merci beaucoup
  • Partager sur Facebook
  • Partager sur Twitter