bonjour à tous,

Alors voilà je suis entrain d'étudier un programme sous Github afin d'en extraire une partie qui devrait me servir dans un projet que je suis entrain de commencer.

En explorant les différents fichiers je tombe souvent sur ce genre d'écritures :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
    def build_dataframe(self):
        """exports the object to pandas format"""
        import pandas as pd
        matrix = self.data
        if matrix is None:
            return
        if isinstance(matrix, coo_matrix):
            data = {'row': matrix.row, 'col': matrix.col, 'data' : matrix.data}
            data_frame = pd.DataFrame(data=data).reindex(columns=['row', 'col', 'data'])
        elif isinstance(matrix, np.ndarray):
            data_frame = pd.DataFrame(data=matrix)
        else:
            raise NotImplementedError(type(matrix))
        self.data_frame = data_frame
 
    def write(self, mat, print_full=True):
        """writes to the F06"""
        mat.write(np.compat.asbytes(str(self) + '\n'))
 
        matrix = self.data
        if self.data is None:
            mat.write('skipping %s because data is None\n\n' % self.name)
            return
        if isinstance(matrix, coo_matrix):
            if print_full:
                for row, col, value in zip(matrix.row, matrix.col, matrix.data):
                    mat.write(np.compat.asbytes("(%i, %i) %s\n" % (row, col, value)))
            else:
                mat.write(str(matrix))
        else:
            mat.write(np.compat.asbytes('name=%r; shape=%s; form=%i; Type=%r\n' % (
                self.name, str(self.data.shape).replace('L', ''),
                self.form, self.shape_str)))
            if print_full:
                np.savetxt(mat, self.data, fmt='%.18e', delimiter=',')
            #f06.write(str(matrix))
            #print('WARNING: matrix type=%s does not support writing' % type(matrix))
        mat.write(np.compat.asbytes('\n\n'))
Alors ce qui me chagrine un peu c'est cette partie : l'import du module pandas dans la fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
    def build_dataframe(self):
        """exports the object to pandas format"""
        import pandas as pd
Est il commode d'écrire de la sorte ? Je trouve tout de même très peu lisible le code même s'il est très commenté, mais importer des modules dans des fonctions ou alors en y insérant des conditions du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
if toto == None :
    import titi
Est ce qu'il y a un intérêt dans ce genre de structures ?

Le premier intérêt que je vois c'est éviter d'importer un module si on en a pas vraiment besoin et ainsi gagner du temps dans l’exécution du programme.

Merci d'avance pour vos retours.

Pour ceux qui sont intéresse par le projet sous Github voici le lien : pyNastran