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

作者:绝世好阿狸 时间:2022-04-02 13:23:25 

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

来源:https://blog.csdn.net/u010900754/article/details/75089682

标签:python,循环,import
0
投稿

猜你喜欢

  • 谈谈网页设计中的字体应用 (3) 实战应用篇·上

    2009-11-24 13:09:00
  • 详解微信小程序网络请求接口封装实例

    2024-06-12 04:08:54
  • 浅谈pycharm的xmx和xms设置方法

    2022-03-06 13:33:42
  • Python 识别12306图片验证码物品的实现示例

    2021-04-03 22:17:24
  • C#中的委托和事件

    2007-09-26 20:50:00
  • python实现桌面气泡提示功能

    2023-07-13 06:37:13
  • pytorch中model.named_parameters()与model.parameters()解读

    2023-02-03 23:47:36
  • MySQL中修改表结构时需要注意的一些地方

    2024-01-29 09:04:11
  • python函数递归调用的实现

    2022-08-14 20:03:57
  • 分享5个方便好用的Python自动化脚本

    2021-04-12 08:27:32
  • 使用Python来做一个屏幕录制工具的操作代码

    2023-11-02 18:57:40
  • 如何通俗的解释TypeScript 泛型

    2024-04-10 16:18:31
  • Python实现定时任务

    2022-06-12 04:53:31
  • Python实现曲线拟合的最小二乘法

    2022-03-24 16:13:25
  • python 获得任意路径下的文件及其根目录的方法

    2022-02-02 17:32:15
  • 回归预测分析python数据化运营线性回归总结

    2023-07-01 15:36:54
  • DB为何大量出现select @@session.tx_read_only 详解

    2024-01-15 15:26:15
  • 列举Python中吸引人的一些特性

    2023-12-17 03:25:57
  • 什么是JSON及JSON的结构

    2008-06-15 07:16:00
  • 基于python图像处理API的使用示例

    2022-12-19 02:14:53
  • asp之家 网络编程 m.aspxhome.com