python学习基础之循环import及import过程
作者:绝世好阿狸 发布时间:2022-04-02 13:23:25
import介绍
import语句作用就是用来导入模块的,它可以出现在程序中的任何位置。
import语句语法
使用import语句导入模块,import语句语法如下:
import module
关键字 模块名
使用方法例如:
import math #入导math模块
math.floor() #调用math模块中的floor()函数
如果要同时导入多个模块,只需要在模块名之前用逗号进行分隔:
import module1,module2,module3.......
同时导入多个模块的方法,对于初学者来说可读性和可理解性不如第一种好。所以想要导入多个模块时,还是比较推荐用第一种方式,把每一个模块都单独进行一次导入,可能会感觉操作起来麻烦一些,但便于理解。
引用
最近项目组用python,慢慢开始学习了。第一天就遇到了import问题。
python语言的import有两种方法,一个是import 模块名,一个是from 模块名 import 函数或者类或者变量。
直接import只能import模块,不能import 模块里面的内容。使用内容必须加上模块名。
在import的时候,系统会把所有的加载的模块载入内存,并且放入一个map中,from A import B的过程是,看是否有A模块在系统中加载,如果有则直接拿出来,否则新建一个,这时需要填充A模块的内容,就需要执行A模块的文件。一旦构建好了A模块,那么就可以从A里面取B了,如果没有就报错。
上述逻辑是如果用A,A没有载入,就执行A,否则就直接返回A的函数或者变量。这个时候就有一个问题,当前脚本Main第一次执行,需要执行from A import ,发现没有A,就新建一个A在内存中,然后填充A模块的信息,就会去执行A,此时,A里面要 from Main import D,那么因为Main已被执行,就直接从内存的map中取得Main的信息,不过此时Main的信息还没有填充完,因为之前就是为了填充才转到A的,这时从已有的空的Main中拿不到D,就会报错,ImportError。
所以,项目中尽量不要循环import,很可能会产生这样的错。那么一旦产生怎么解决?
可以把import语句尽可能往后放,比如放到文件最后,那么应该是没问题的,因为执行到import时,已经确保了当前的脚本的内容已经注册到了内存的map中。
当然也可以放到函数的内部,即其他模块的调用处。
from lib import lib1
def func1():
print("main.func1")
lib1()
def func2():
print("main.func1")
func1()
main.py
from main import func2
def lib1():
func2()
print("lib.lib1")
def lib2():
func2()
lib.py
来源:https://blog.csdn.net/u010900754/article/details/75089682


猜你喜欢
- 类的私有属性和方法Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的publ
- 前言最近在学习python,发现了解线程信号量的基础知识,对深入理解python的线程会大有帮助。所以本文将给大家介绍Python3.X线程
- 前言在使用pandas的时候,有些场景需要对数据内部进行分组处理,如一组全校学生成绩的数据,我们想通过班级进行分组,或者再对班级分组后的性别
- 本文详解的讲解了使用Pillow库进行图片的简单处理,使用PyCharm开发Python的详细过程和各种第三方库的安装与使用。目标1.熟悉P
- 目录1. 字符串的翻转2. 判断字符串是不是回文串3. 单词大小写4. 字符串的拆分5. 字符串的合并6. 将元素进行重复7. 列表的拓展8
- 本文介绍了python实现简单中文词频统计示例,分享给大家,具体如下:任务简单统计一个小说中哪些个汉字出现的频率最高知识点1.文件操作2.字
- json数据格式参见json数据格式说明。如果没操作过json数据,建议先看下上面的文章,有助于理解本文后面的内容。Go json包Mars
- mysql-5.7.23-winx64 解压版详细安装教程,供大家参考,具体内容如下1、Click here to download Mys
- 说明:使用mysqldump –all-databases会导出所有库。但如果做主从,从主库dump出数据时,我们是不需要也不想要infor
- 什么是MySQL多实例简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306、3307),同时运行多个Mysql服
- 前言列表(list)同字符串一样都是有序的,因为他们都可以通过切片和索引进行数据访问,且列表是可变的。创建列表的几种方法第一种name_li
- PHP chr() 函数实例从不同 ASCII 值返回字符:<?php echo chr(52) . "<br>
- 很多朋友都有过制作网页的经历,如今,众多网页的设计都用到了表格。这样不仅有利于网页的维护,同时,提高了网页的观赏性。在众多网页制作风格中,细
- 记录的MySQL 5.7.9安装教程,分享给大家环境介绍:操作系统:Centos 7.1mysql数据库版本:mysql5.7.9mysql
- 实验目的主要是获取2021年今日说法每期节目主要内容及时间今日说法的网址为:http://tv.cctv.com/lm/jrsf/index
- 自定义图片生成词云图的多种方法有时候我们会根据具体的场景来结合图片展示词云,比如我分析的是美团评论,那么最好的展示方法就是利用美团的logo
- 本文为大家分享了mysql 8.0.15 winx64压缩包安装配置方法,供大家参考,具体内容如下1、在官网下载压缩包2、解压缩包3、增加配
- 本文实例讲述了Python自动发送邮件的方法。分享给大家供大家参考,具体如下:python发邮件需要掌握两个模块的用法,smtplib和em
- 系统环境centos7python2.7先在操作系统安装expect[root@V71 python]# vi 3s.py#!/usr/bi
- 方法一:def commaSpiltList(self, listData): listData = list(listData) strs