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去掉字符串中空格的方法
Mar 11 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
python实现读取并显示图片的两种方法
Jan 13 Python
简单谈谈python中的语句和语法
Aug 10 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
Python实现DDos攻击实例详解
Feb 02 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
简单了解Pandas缺失值处理方法
Nov 16 Python
python实现横向拼接图片
Mar 23 Python
Python实现手绘图效果实例分享
Jul 22 Python
Pyhton模块和包相关知识总结
May 12 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
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
js比较日期大小的方法
2015/05/12 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
Django学习笔记之Class-Based-View
2017/02/15 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
大学生求职自荐信
2013/12/12 职场文书
商业项目策划方案
2014/06/05 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
滞留工资返还协议书
2014/10/19 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
个人工作保证书
2015/02/28 职场文书
2014年个人总结范文
2015/03/09 职场文书
观后感开头
2015/06/19 职场文书
婚宴主持词
2015/06/30 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers