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在linux中输出带颜色的文字的方法
Jun 19 Python
带你了解python装饰器
Jun 15 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
python中Switch/Case实现的示例代码
Nov 09 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
解决pandas 作图无法显示中文的问题
May 24 Python
python中不能连接超时的问题及解决方法
Jun 10 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
Sep 29 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
python连接mysql数据库并读取数据的实现
Sep 25 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中对2个数组相加的函数
2011/06/24 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
Javascript加载速度慢的解决方案
2014/03/11 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JavaScript中的this机制
2016/01/30 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 测试实现方法
2008/12/24 Python
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python map和reduce函数用法示例
2015/02/26 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
简述python Scrapy框架
2020/08/17 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
英国女士家居服网站:hush
2017/08/09 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
放飞蜻蜓反思
2014/02/05 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
就业意向书范文
2014/04/01 职场文书
文明好少年事迹材料
2014/08/19 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
学生评语集锦
2015/01/04 职场文书
介绍信范文大全
2015/05/07 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
Python实现双向链表
2022/05/25 Python