1. 模块介绍 在Python中,一个.py文件就是一个模块 在Python,万物皆对象,模块也不例外 通过模块,可以有效的组织代码结构,让代码结构更加清晰 但是,初期可能让大家逻辑上更加混乱 2. 导入模块 导入模块是指: 在一个.py文件中,使用另外一个.py文件时,需要将这个文件导入 在一个模块中,使用另外一个模块时,需要将这个模块导入 import os import time import random import sys import functools 如果包有很多层级的情况: www.itcast.cn cn itcast python java c++ from cn.itcast.python import database 方式一: import 模块名 (掌握) 方式二: from 模块名 import 成员名 (掌握) 特例: from 模块名 import * (掌握) 别名: import 模块名 as 别名 from 模块名 import 成员名 as 成员别名 两种导入方式区别: 1.import方式,是拿到了模块对象的引用地址,通过这个地址来使用模块中的成员 2.from-import方式,相当于将被导入模块中的成员,复制了一份到本地模块中.所以可以直接使用成员来访问被导入的成员 3.对于import 方式来说,没有任何限制 4.对于from-import方式来说,有些成员是不能被导入的(有权限限制) 3. __all__ __all__ 是一个魔法属性,类型是一个列表,元素是字符串类型 作用: 可以改变在使用 from-import 方式导入模块时,成员的导入规则 3.1 from-import 在导入时,会产生命名冲突问题 在程序中最后的定后会起作用 4. 模块导入的搜索顺序(了解) 模块的分类: 1.自定义模块 2.系统模块 3.第三方模块 查找顺序: 1.当前程序所在目录 2.在当前程序所在工程的根目录 3. PYTHONPATH 4. 系统目录 5. site_packages 第三方模块的安装目录 __name__ (掌握) 作用: 如果__name__ 出现在当前执行的模块中时,得到的值是 __main__ 这个字符串,用来表示执行的是当前文件 如果__name__ 出现在在了被导入模块中时,得到的值是被导入模块的模块名 5. 包 包:就是一个文件夹 区别: 在python3以前,包中是有一个文件 __init__.py ,没有该文件的就是一个普通 的文件夹,有该文件才是包 在python3以后,不管有没有,都认为是一个包 6. 导入包中的模块 方式一: 通过包和模块的路径,明确的告诉解释器,要导入哪个包里的哪个模块 import 包名.模块名 from 包名 import 模块名 from 包名.模块名 import 成员名 方式二: import 包名 from 包名 import * 在导入时,不会指定模块名,只指定包名 这时,默认情况下(__init__.py 为空)哪个模块都不会导入 为了能让模块正常导入,这里需要 __init__.py 文件中设置可以被导入的模块 通过方式: from . import 模块名 注意: __all__ 只对 from 包名 import * 方法生效,对 import 包名 方式无效 __all__ 在 __init__.py 文件中的使用了解即可