模块: 简介, 自定义模块

一 模块的简介

模块:

  1. 拿来就用
  2. 节省开发时间
  3. 提升效率
  4. 结构化, 便于查找 ,便于修改,便于维护
  5. 模块分类: 内置模块,第三方模块(pypi第三方模块平台),自定义模块

二 自定义模块

一个py文件就是一个模块 模块名是不需要加后缀名的

2.1 import 导入

为了防止重复导入,python优化,第一次导入后会把模块名加载到内存,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句

导入发生的事情:

  1. 在当前的名称空间中开辟一个新的空间
  2. 将模块中的所有代码执行
  3. 通过模块名进行查找函数(工具)

每个模块都是一个独立的名称空间

起别名:

import text as t
t.func()

做兼容性

choose = input(msg)
if choose == '1':
	import meet as t
elif choose == '2':
	import text as t
t.func()

导入多个模块

import os,sys,json #可以这样写单不推荐
# 推荐分开写:
import os
import sys
import json

2.2 from ... import ...

from text import func
func()

1. import 和 from的区别

import:

优点:不会和当前文件定义的变量或者函数发生冲突

缺点:占用内存比较大

from:

优点:占用内存比较小

缺点:会和当前文件定义的变量或函数发生冲突

解决办法:起别名

from test import name as n

2.3 一行导入多个

from test import name,func,foo

2.4 from ... import *

把文件中所有的不是以下划线开头的名字都导入到当前位置

可能会覆盖之前定义的名字,可读性差

# 在被导入的模块顶部写
__all__['name','func()'] # 你想导入的
# 只针对 *

2.5 py文件的两种功能

脚本: 在终端中执行

模块: 不使用或者导入

if __name__ == '__main__': #测试接口
    func()
# 在当前模块中使用__name__就是'__main__'
# 当模块被导入的时候__name__就是被导入的模块名

2.6 导入路径

相对路径: form day15.t1 import text

从day15文件夹的t1文件夹中导入text模块

绝对路径:

from sys import path
path.insert(0,'D:\\')  # 把绝对路径加到环境变量中

2.7 模块的查找顺序

内存中已经加载的模块->内置模块->sys.path路径中包含的模块

自定义的模块名不应该与系统内置模块重名

posted on 2019-11-05 21:25  Lav3nder  阅读(143)  评论(0编辑  收藏  举报