扣丁学堂Python学习基础之循环import及import过程

2018-06-14 13:19:26 513浏览

本篇文章扣丁学堂Python培训小编主要是和大家分享一下Python学习基础之循环import及import过程,文章中会列出具体的代码供大家参考,对此感兴趣的小伙伴就随小编一起来看一下吧。



扣丁学堂Python学习基础之循环import及import过程



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学习基础,循环import及import过程扣丁学堂Python在线学习小编就先给大家介绍这些,希望对小伙伴们有所帮助,想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂是专业的Python培训机构,不仅有专业的老师和与时俱进的课程体系,还有大量的Python在线视频供学员观看学习哦。扣丁学堂Python技术交流群:279521237。


扣丁学堂微信公众号

关注微信公众号获取更多学习资料



查看更多关于"Python开发资讯"的相关文章>



标签: 扣丁学堂Python学习基础 Python循环import及import过程 Python培训 Python视频教程 Python基础教程 python安装教程 Python核心编程 Python在线教程 Python在线视频 Python在线学习

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号