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

 更新时间:2018年04月22日 08:46:45   作者:绝世好阿狸  
python中的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 Celery异步任务队列使用方法解析

    Python Celery异步任务队列使用方法解析

    这篇文章主要介绍了Python Celery异步任务队列使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python 循环函数详细介绍

    Python 循环函数详细介绍

    循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。感兴趣得小伙伴请参考下面文字得具体内容
    2021-09-09
  • 一文详解Python中的时间和日期处理

    一文详解Python中的时间和日期处理

    在Python开发中,我们经常需要处理日期和时间,Python提供了一些内置模块,如datetime、time和calendar,这些模块让我们能够轻松地获取、操作和格式化日期和时间,本文将介绍如何在Python中使用这些模块进行日期和时间的处理
    2023-06-06
  • 自定义Django默认的sitemap站点地图样式

    自定义Django默认的sitemap站点地图样式

    这篇文章主要介绍了自定义Django默认的sitemap站点地图样式,通过代码给大家介绍了使用Django的sitemap功能,代码很简单非常不错对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Python中最常用的操作列表的几种方法归纳

    Python中最常用的操作列表的几种方法归纳

    这篇文章主要介绍了Python中最常用的操作列表的几种方法归纳,列表的方法是Python学习中最基本的知识,需要的朋友可以参考下
    2015-04-04
  • 利用pytorch实现对CIFAR-10数据集的分类

    利用pytorch实现对CIFAR-10数据集的分类

    今天小编就为大家分享一篇利用pytorch实现对CIFAR-10数据集的分类,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 利用python实现在微信群刷屏的方法

    利用python实现在微信群刷屏的方法

    今天小编就为大家分享一篇利用python实现在微信群刷屏的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • Python中使用动态变量名的方法

    Python中使用动态变量名的方法

    这篇文章主要介绍了Python中使用动态变量名的方法,需要的朋友可以参考下
    2014-05-05
  • python实现对指定输入的字符串逆序输出的6种方法

    python实现对指定输入的字符串逆序输出的6种方法

    这篇文章主要介绍了python实现对指定输入的字符串逆序输出的6种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • tensorflow中tf.slice和tf.gather切片函数的使用

    tensorflow中tf.slice和tf.gather切片函数的使用

    今天小编就为大家分享一篇tensorflow中tf.slice和tf.gather切片函数的使用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01

最新评论