python-29-模块与包导入

前言

模块与包导入,经常看到代码里开头那几行都是from xxx import xxx 或者 import xxx,这就是模块与包的导入。

模块的导入推荐顺序:

  • 内置模块,如os,sys
  • 扩展模块,django
  • 自定义模块,自己封装的模块

一、模块导入

  • 1.modules里查找是否存在模块,存在即被导入,否则sys.path依次查找模块,找到导入,否则找不到调用时会报错
  • 2.创建这个模块的命名空间
  • 3.把文件的名字放到命名空间

1、模块不会重复被导入 : sys.moudles;从哪儿导入模块 : sys.path

2、import后导入的模块直接被执行

# 1、import后导入的模块直接被执行
import test

 3、模块起别名,直接在后面as xxx

# 2、模块起别名
import test as t
print(t.f())

模块起别名的好处:①模块名太长,可以起短的名字;②提高代码兼容性

# 起别名的好处例子:提高兼容性,调用的时候全用:db.xxx
if db == 'mysql':
    import pymysql as db
elif db == 'sqlsv':
    import sqlsv as db
else:import nodb db

 4、form导入,根据sys.path找,time 将不能使用,可以import多个

 5、import * (不推荐用)

# 4、import * 不推荐用
from time import *
sleep = 1           # 万一方法与变量命名重复会报错
sleep(1)

 6、py文件内运行,在模块中 有一个变量__name__如果等于__mian__那么就在本模块中运行,否则不运行。

在代码最后加一句 if __name__ == '__main__':,后面接在本模块中运行的代码:

if __name__ == '__main__':
    xxx

总结:

①import 模块名:模块名.变量名

  • 和本文件中的变量名完全不冲突

②from import:from 模块名 import 变量名

  • 直接使用 变量名 就可以完成操作
  • 如果本文件中有相同的变量名会发生冲突

③from 模块名 import *

  • 将模块中的所有变量名都放到内存中
  • 如果本文件中有相同的变量名会发生冲突

二、包导入

什么叫包?把解决一类问题的模块放在同一个文件夹里,就好像类下面有多个方法可以调用。

1、比如我要在api模块中导入common模块,那么先要导入common.com包再importcommon:

 2、一个包下有多个模块:

 3、pycharm中新建包:

 如果报找不到xxx模块的错误,可以使用 sys.path 查看环境变量进行调节或将它加入环境变量。

欢迎来大家QQ交流群一起学习:482713805

发布了83 篇原创文章 · 获赞 0 · 访问量 774

猜你喜欢

转载自blog.csdn.net/qq_42675140/article/details/104872706
今日推荐