Dans la continuité de [Introduction to Data Scientists] Bases de Python ♬ Fonctions et fonctions anonymes, etc., nous parlerons des fonctions et des classes. 【Mise en garde】 ["Cours de formation de scientifique des données à l'Université de Tokyo"](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3 % 81% AE% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 82% B5% E3% 82% A4% E3% 82% A8% E3% 83% B3% E3% 83 % 86% E3% 82% A3% E3% 82% B9% E3% 83% 88% E8% 82% B2% E6% 88% 90% E8% AC% 9B% E5% BA% A7-Python% E3% 81 % A7% E6% 89% 8B% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 97% E3% 81% A6% E5% AD% A6% E3% 81% B6 % E3% 83% 87% E2% 80% 95% E3% 82% BF% E5% 88% 86% E6% 9E% 90-% E5% A1% 9A% E6% 9C% AC% E9% 82% A6% Je vais lire E5% B0% 8A / dp / 4839965250 / ref = tmm_pap_swatch_0? _ Encoding = UTF8 & qid = & sr =) et résumer les parties que j'ai des doutes ou que je trouve utiles. Par conséquent, je pense que le synopsis sera simple, mais veuillez le lire en pensant que le contenu n'a rien à voir avec ce livre.
Ce chapitre se concentre sur le mécanisme des appels de fonctions python et les différences entre la notation de classe et les fonctions. Pour le mécanisme d'appel de fonction, reportez-vous à ce qui suit. 【référence】 Appel de la fonction de module @PyQ
Créez une instance de la classe. Nous laisserons un peu ce livre pour montrer les similitudes entre les appels de fonction, les déclarations de classe et l'exécution des instances.
Les fonctions sont parfois utilisées dans une PG, mais lorsque vous essayez d'écrire une PG compliquée, les fonctions sont enregistrées et utilisées dans une structure de type package avec une structure de répertoires structurée. Dans ce cas, python a un mécanisme important.
Autrement dit, si vous exécutez le code suivant avec > python calc_add.py
, il fonctionnera dans l'ordre suivant.
① Deux définitions de fonction sont faites
② Le nom du module calc_add
est assigné à __name__
③ L'instruction print
est exécutée
④ L'instruction ʻif est True, et les deux instructions
print` suivantes sont exécutées.
calc_add.py
def calc_add(a, b):
return a + b
def calc_multi(a, b):
return a * b
print('__name__:', __name__)
if __name__ == '__main__':
print(calc_add(5,3))
print(calc_multi(5, 3))
résultat
__name__: __main__
8
15
main.py
Dans ce cas, exécutez > python main.py
(1) Lire deux fonctions calc_add, calc_multi
de calc_add.py
par la première instruction de déclaration. À ce moment, comme vous pouvez le voir dans la sortie, le calc_add.py
ci-dessus est exécuté, l'instruction print
est exécutée et __name__: calc_add
est sorti. L'instruction ʻIf est False (
__ name__ = calc_add), donc elle ne sera pas exécutée ② Ensuite, l'instruction d'impression de main.py est exécutée. ③ Puisque l'instruction ʻif
de main.py
est True, les deux instructions ʻ printsuivantes sont exécutées. Avec ce mécanisme, vous pouvez appeler une fonction et l'utiliser. ④ Par conséquent, il est nécessaire d'inclure la notation ʻif __name__ == '__ main __':
. Cependant, ce n'est pas essentiel lors de l'appel et de son utilisation.
main.py
from calc_add import calc_add, calc_multi
print('__name__2:', __name__)
if __name__ == '__main__':
print(calc_add(5,3))
print(calc_multi(5, 3))
résultat
__name__: calc_add
__name__2: __main__
8
15
** Remarque) print ('__ name__:', __name __)
est inclus pour expliquer le mécanisme et n'est généralement pas nécessaire **
class
La classe ressemble à la fonction.
Cependant, déclarez class.
Ensuite, comme vous pouvez le voir dans l'instruction if, la classe définit l'instance, puis appelle et utilise la fonction définie dans la classe.
Ce mécanisme est appelé orienté objet.
Autrement dit, c'est un mécanisme qui génère de nombreuses instances à partir de la classe et les exécute.
Les caractéristiques de la définition de classe sont les suivantes.
① Déclarer la classe
(2) Définissez le constructeur def __init __ (self, x, y):
. La variable self est obligatoire et définie (la variable self est spéciale, mais il m'a fallu un certain temps pour penser que ce n'était qu'une des variables). Les arguments x et y définissent ce qui est nécessaire à un moment donné.
【référence】
Qu'est-ce que Python self? Explication de l'utilisation et des précautions
À propos de soi
・ Self n'est pas décrit comme un argument lors de la déclaration d'une instance
・ Self est une variable de classe
・ Peut également être utilisé pour l'héritage de classe
-Si la variable de classe et la variable d'instance ont des valeurs, la variable d'instance a la priorité pour référence.
③ Constructeur def __init __ (self, x, y):
est le code qui fonctionne en premier lorsque l'instance de la classe est définie.
④ Définissez les autres fonctions nécessaires.
⑤ Exécutez le traitement nécessaire comme ʻinstance.calc_add () ⑥ ʻif __name__ == '__ main __':
est écrit pour la même raison que la fonction, mais ce n'est pas essentiel lors de l'appel et de son utilisation, tant de classes n'ont pas cette instruction if ou une instruction d'exécution.
** Remarque) print ('__ name__:', __name __)
est inclus pour expliquer le mécanisme et n'est généralement pas nécessaire **
calc_class.py
class MyCalcClass:
def __init__(self,x,y):
self.x = x
self.y = y
def calc_add1(self, a, b):
return a + b
def calc_add2(self):
return self.x + self.y
def calc_multi(self, a, b):
return a * b
print('__name__:', __name__)
if __name__ == '__main__':
instance_1 = MyCalcClass(1,2)
instance_2 = MyCalcClass(5,10)
print(instance_1.calc_add1(5,3))
print(instance_1.calc_add2())
print(instance_1.calc_multi(5, 3))
instance_1.calc_print(5)
>python calc_class.py
résultat
C'est comme suit, mais vous pouvez voir que le résultat est calculé en fonction de la valeur initiale de instance1.
Si la partie de l'instruction if est supprimée, seul __name__: __main__
est affiché.
__name__: __main__
8
3
15
data:5:Valeur de y 2
main.py
main_class.py
from calc_class import MyCalcClass
print('__name__2:', __name__)
if __name__ == '__main__':
instance_1 = MyCalcClass(1,2)
instance_2 = MyCalcClass(5,10)
print(instance_1.calc_add1(5,3))
print(instance_1.calc_add2())
print(instance_1.calc_multi(5, 3))
instance_1.calc_print(5)
résultat
>python main_class.py
Bien sûr, le résultat est le même que ↑. Cependant, comme pour la fonction, __name__: calc_class
est affiché.
Autrement dit, le nom du fichier appelé est entré dans «name», et «main» est entré dans le cas de lui-même.
__name__: calc_class
__name__2: __main__
8
3
15
data:5:Valeur de y 2
・ J'ai comparé l'appel de fonction et la classe -Définir une classe, l'appeler et exécuter l'instance
・ C'est juste avant d'écrire du code python général ・ Ce livre met fin aux bases de python dans cette section, mais les parties manquantes seront complétées dans les sections futures (dans un sens, ce livre continuera à expliquer le code en utilisant diverses bibliothèques de python).