La colonne
Tutoriel vidéo Python vous présente aujourd'hui l'apprentissage du mécanisme d'importation de module Python et les spécifications des grands projets.
Dans le processus d'utilisation de Python dans nos projets quotidiens, nous devons souvent résoudre les problèmes d'importation de chaque module, et nous rencontrons souvent des références recherches de chemin. Il y a des problèmes tels que l'importation croisée de modules, etc., j'ai donc écrit cet article pour décrire le mécanisme d'importation de modules de Python et les spécifications d'importation de modules que nous devrions suivre dans nos projets quotidiens à grande échelle
Dans la programmation quotidienne, afin de réutiliser la logique de code que nous avons écrite, nous encapsulerons ces codes dans des modules. Si nécessaire, nous pourrons directement les importer et les réutiliser pour améliorer notre efficacité de développement. Les modules peuvent définir des fonctions, des classes, des variables et peuvent également contenir du code exécutable. Il existe trois types de sources de modules : ①Modules intégrés Python (bibliothèque standard) ; ②Modules tiers ; ③Modules personnalisés ;
L'importation de modules se fait généralement en utilisant le mot-clé import dans l'en-tête du fichier. Importer un module équivaut à l'exécuter une fois et. puis l'importer. module, puis établit une connexion avec l'espace de noms du module importé dans cet espace de noms, ce qui équivaut à créer une nouvelle variable dans cet espace de noms. Le nom de cette variable est le nom du module importé et pointe vers le module. espace de noms du module importé. Par conséquent, le module importé est équivalent à une variable, Par conséquent, l'importation multiple du même module ne sera exécutée que lors de sa première importation (Les importations ultérieures détermineront que cette variable de module existe déjà et seront ne pas être exécuté)
Chaque module importé sera dans le dictionnaire intégré Python sys.modules. Une fois Python démarré, il sera chargé en mémoire, lorsque nous importerons de nouveaux modules, sys.modules enregistrera automatiquement le module. Le mécanisme de chemin de recherche de module de Python est :
sys.path dans le code réutilisé, et le module peut également être référencé.
Importation de chemin absoluToutes les importations de modules démarrent à partir du "nœud racine". L'emplacement du nœud racine est déterminé par le chemin dans sys.path. Le répertoire racine du projet se trouve généralement automatiquement dans sys.path. Si vous souhaitez que le programme soit exécuté partout, vous devez modifier manuellement sys.pathimport sys,os BASE_DIR = os.path.dirname(os.path.abspath(__file__))#项目根目录所在的绝对路径sys.path.append(BASE_DIR)import A, B #导入A、B包复制代码
#from . import b2 #这种导入方式会报错,只有在包内部直接执行的时候才可以这样导入。import b2#正确b2.print_b2()复制代码
init.py dans un dossier, il signifie ce fichier Un dossier est un package (package), et plusieurs modules (modules) en dessous forment un tout, et ces modules (modules) peuvent être importés dans d'autres codes via le même package (package). Le fichier init.py est utilisé pour organiser les packages, faciliter la gestion des références entre modules et contrôler le comportement d'importation des packages.
Le fichier ne peut contenir aucun contenu, c'est-à-dire qu'il s'agit d'un fichier vide (lorsqu'il est vide, rien ne peut être fait en utilisant simplement le formulaire d'importation [package]). Il a juste besoin d'exister, ce qui est le cas). équivalent à une marque.En python3, même s'il n'y a pas de fichier init.py sous le package, le package d'importation ne signalera toujours pas d'erreur, tandis qu'en python2, le fichier doit être sous le package, sinon importer Le package signalera une erreur
all est une variable importante utilisée pour spécifier que ce package (package) est importé * Quand, quels modules seront importés dans [la portée actuelle]. Les modules ne figurant pas dans la liste tous ne seront pas référencés par d'autres programmes. Vous pouvez réécrire all, tel que all= ['nom du module 1 du package actuel auquel il appartient', 'nom du module 1']. le nom du module dans la liste sera utilisé Import.
在包内部直接运行时,包的name == 'main',但是在外部导入包是,可以通过
if __name__ == '__main__':复制代码
来避免实现包内部调试时的逻辑
当两个模块A和B之间相互import时,就会出现循环导入的问题,此时程序运行会报错:can not import name xxx,如:
# a.pyprint('from a.py')from b import x y = 'a'复制代码
# b.pyprint('from b.py')from a import y x = 'b'复制代码
我们来分析一下这种错误是怎么出现的:
因此在a.py中执行from b import x的顺序就是1->3,先引入b,b里面from a import y由相当于执行了a.py,顺序是1->2,因为此时b已经引入所以不会执行3,2中无法找到x对象,因为引入b时还没执行到x='b'这一步,所以报错了
分离模块,将同一类别的模块放在同一目录下,形成类别分明的目录架构,如:
更多相关免费学习推荐:python视频教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!