python学习基础之循环import及import过程


Posted in Python onApril 22, 2018

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
深入理解python中的select模块
Apr 23 Python
python监控进程脚本
Apr 12 Python
Windows下PyCharm安装图文教程
Aug 27 Python
Python实现程序判断季节的代码示例
Jan 28 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
Python中循环引用(import)失败的解决方法
Apr 22 #Python
Python 数据处理库 pandas进阶教程
Apr 21 #Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 #Python
将python代码和注释分离的方法
Apr 21 #Python
Python基于百度AI的文字识别的示例
Apr 21 #Python
python实现随机调用一个浏览器打开网页
Apr 21 #Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 #Python
You might like
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
javascript数组去掉重复
2011/05/12 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
JSONP基础知识详解
2017/03/19 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python获取网页上图片下载地址的方法
2015/03/11 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python实现抖音视频批量下载
2018/06/20 Python
python opencv实现旋转矩形框裁减功能
2018/07/25 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
tensorflow 模型权重导出实例
2020/01/24 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
上课说话检讨书大全
2014/01/22 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
学校献爱心活动总结
2014/07/08 职场文书
公司员工活动策划方案
2014/08/20 职场文书
保证书格式
2015/01/16 职场文书
海洋天堂观后感
2015/06/05 职场文书
法制教育主题班会
2015/08/13 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
python的变量和简单数字类型详解
2021/09/15 Python