Souvent vu dans les scripts python,
pseudo.py
if __name__ == '__main__':
Je ne savais pas ce que c'était.
Je l'ai utilisé comme référence. http://programming-study.com/technology/python-if-main/
En python, vous tirez et utilisez souvent quelque chose de défini dans d'autres scripts. Importez la bibliothèque. C'est également utile lorsque vous souhaitez le faire éventuellement (bien que ce ne soit pas possible maintenant) en mettant la fonction que vous avez définie dans un autre script et en l'important en tant que module.
\ _ \ _ Nom \ _ \ _ ci-dessus si est une variable qui est automatiquement créée lorsque le script est exécuté, et lorsque le script est exécuté directement, \ _ \ _ nom \ _ \ _ est \ _ \ _ main \ _ Le nom \ _ est stocké.
En d'autres termes, l'instruction if ci-dessus se ramifie selon que le script a été exécuté directement à partir du shell.
Comme indiqué ci-dessous, j'ai écrit un script contenant des instructions d'exécution à l'intérieur et à l'extérieur de l'instruction if.
name_is_main.py
def func(a,b):
return a + b
print('MY NAME IS ' + __name__)
if __name__ == '__main__':
print('hello!')
print(func(3,4))
Résultat de l'exécution: MY NAME IS __main__ hello! 7
name_is__not_main.py
import name_is_main as nim
print('my name is' + __name__)
if __name__ == '__main__':
print('world!')
print(nim.func(7,8))
Résultat de l'exécution: MY NAME IS name_is_main my name is __main__ world! 15
Dans name \ _is \ _main.py, \ _ \ _ main \ _ \ _ a été entré dans \ _ \ _ name \ _ \ _ tel quel, et le contenu de l'instruction if a également été exécuté.
Dans name \ _is \ _ not \ _main.py, l'instruction d'impression en dehors de l'instruction if du nom importé \ _is \ _main.py a également été exécutée. Dans le nom importé \ _is \ _main.py, le nom du script \ _is \ _main est stocké dans \ _ \ _ nom \ _ \ _. D'autre part, \ _ \ _ main \ _ \ _ était stocké dans \ _ \ _ nom \ _ \ _ du nom \ _is \ _ pas \ _main.py lui-même.
Comme mentionné ci-dessus, s'il y a une description supplémentaire dans le script importé, elle sera exécutée sans autorisation du côté importateur.
Sur le site auquel j'ai fait référence, il a été introduit d'écrire un script pour tester le fonctionnement du module comme une utilisation de if \ _ \ _ name \ _ \ _ == \ _ \ _ main \ _ \ _:. C'était. Je vois.
Comment est-il utilisé en dehors des tests?
Lorsque vous écrivez un script que vous n'avez pas l'intention de modulariser, que faites-vous si vous obtenez "Je pense que cette fonction peut être utilisée ailleurs, alors pensez à la modularisation ..."? À ce stade, déplacez-vous la fonction vers un autre script, ou décidez-vous d'utiliser une instruction if comme celle ci-dessus et de la laisser telle quelle dans le script?
Recommended Posts