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实现的检测web服务器健康状况的小程序
Sep 17 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python使用cookielib模块操作cookie的实例教程
Jul 12 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
浅谈使用Python变量时要避免的3个错误
Oct 30 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
Python Gitlab Api 使用方法
Aug 28 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
django实现类似触发器的功能
Nov 15 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
Python实现疫情地图可视化
Feb 05 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读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP序列化操作方法分析
2016/09/28 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
Python实现的彩票机选器实例
2015/06/17 Python
Python实现Kmeans聚类算法
2020/06/10 Python
OpenCV 模板匹配
2019/07/10 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
银行实习的自我鉴定
2013/12/10 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
初二学习计划书范文
2014/04/27 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android