模块 ? ? 模块概述(一个扩展名.py的文件就称为一个模块) ?? ? ? ?能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用 ?? ? ?? ? ?? ?自定义模块(一是规范代码,让代码更易于阅读;二是方便其他程序使用已经编写好的代码,提高开发效率) ?? ? ? ?创建模块《模块文件的扩张名必须是.py) ?? ??? ? ? ?创建模块可以将模块中的相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为“模块名+.py"的形式 ?? ??? ??? ?创建模块时,设置的模块 ?? ??? ? ?? ??? ?使用import语句导入模块 ?? ??? ? ? ?先以模块的形式加载模块中的代码 ?? ??? ??? ?就可以在其他程序中使用该模块 ?? ??? ??? ?import modulename[as alias]------每执行一条语句都会创建一个新的命名空间(namespace),需要在具体的变量、函数和类名前加上“模块名”前缀 ?? ??? ??? ? ? ? ?? ??? ??? ? ? ?# modulename 要导入模块的名词 ?? ??? ??? ??? ?# as alias 为给模块起的别名,通过该别名也可以使用模块 ?? ??? ??? ??? ? ? ?在调用模块的变量、函数或者类时,需要在变量名、函数名或者类名前添加“模块名”,作为前缀 ?? ??? ??? ??? ??? ?使用inport语句还可以从一次导入多个模块,在导入多个模块时,模块名之间使用逗号“,”进行分割 ?? ??? ??? ??? ??? ? ? ?import bmi,tips,differenttree ?? ??? ? ?? ??? ? ? ? ? ? ? ?命名空间(namespace) ?? ??? ??? ??? ??? ? ? ?命名空间可以理解为记录对象名字和对象之间对应关系的空间。目前Python的命名空间大部分都是通过字典(dict)来实现的 ?? ??? ? ?? ??? ?使用from...import语句导入模块----- ?? ??? ? ? ?from modulename import member? ?? ??? ??? ? ? ?modulename:模块名称、区分字母大小写,需要和定义模块设置的模块名称的大小写保持一致 ?? ??? ??? ??? ?member:用于指定要导入的变量,函数或者类等,可以同时导入多个定义,各个定义之间使用逗号“,”分割,如果想导入全部定义,也可以使用通配符星号“*”代替 ?? ??? ??? ??? ? ?? ??? ??? ??? ?所导入的内容在当前的命名空间是唯一的,后导入的同名变量,函数或者类会覆盖先导入的, ?? ??? ??? ??? ? ?? ??? ? ?? ??? ? ?? ??? ?模块搜索目标(当使用import语句导入模块是,默认情况下,会按照以下顺序进行查找) ?? ??? ? ? ?1、在当前目录(即执行的python脚本文件所在目录)下查找 ?? ??? ??? ?2、到PYTHONPATH(环境变量)下的每个目录中查找 ?? ??? ??? ?3、到python的默认安装目录下查找 ?? ??? ??? ? ?? ??? ??? ?以下各个目录的具体位置保存在标准木块sys的sys.path变量中, ?? ??? ??? ?import sys # 导入标准模块sys ?? ??? ??? ?print(sys.path) # 输出具体目录 ?? ??? ??? ?使用import语句导入模块,模块名是区分字母大小写的 ?? ??? ??? ? ? ?1、临时添加-----通过该方法添加的目录只在执行当前文件的窗口中有效,窗口关闭即失效 ?? ??? ??? ??? ? ? ?import sys ?? ??? ??? ??? ??? ?sys.path.append('目录') ?? ??? ??? ??? ? ? ? ?? ??? ??? ??? ?2、增加.pth文件(推荐)-----通过该方法添加的目录只在当前版本的python中有效; ?? ??? ??? ??? ? ? ?1、python安装目录下的Lib\site-packages子目录 ?? ??? ??? ??? ??? ?2、创建一个扩展名为.pth的文件 ?? ??? ??? ??? ??? ? ? ?创建.pth的文件后,需要重新打开要执行的导入模块的python文件,否则新添加的目录不起作用 ?? ??? ??? ??? ??? ?3、在文件中添加要导入模块所在的目录 ?? ??? ??? ??? ? ?? ??? ??? ??? ?3、在PYTHONPATH环境变量中添加-----通过该方法添加的目录可以在不同版本的python中共享 ?? ??? ??? ??? ? ? ?在变量值中,添加新的模块目录 ?? ??? ??? ??? ??? ? ? ?在环境变量中添加模块目录后,需要重新打开要执行的导入模块的python文件,否则新添加的目录不起作用 ?? ? ?? ?Python中的包-----分层次的目录结构 ? 文件夹 ?只不过在该文件夹下必须存在一个名词为"__init__"的文件 ?? ? ? ?python程序的包结构 ?? ??? ? ? ?项目名---用于保存后台文件的包---.py(模块) ?? ??? ? ?? ??? ?创建和使用包 ?? ??? ? ? ?1、创建包 ?? ??? ? ? ? ? ?创建包实际就是创建一个文件夹,并且在该文件夹中创建一个名词为“__init__.py"的python文件 ?? ??? ??? ? ? ?在__init__.py文件中,可以不编写代码,也可以编写一些python代码。 ?? ??? ??? ??? ?在“__init__.py"文件中所编写的代码,在导入包中会自动执行 ?? ??? ??? ?2、使用包 ?? ??? ??? ? ? ?通过"import + 完整包名 + 模块名"形式加载指定模块 ?? ??? ??? ??? ?通过"from + 完整包名 + import + 模块名"形式加载指定模块 ?? ??? ??? ??? ?通过"from + 完整包名 + 模块名 + import + 定义名"形式加载指定模块 ?? ??? ??? ??? ? ? ?可以使用星号*代替定义名,表示下载该模块下的全部定义 ?? ??? ? ?? ??? ?以主程序的形式执行 ?? ??? ? ? ?导入和使用标准模块 ?? ??? ??? ? ? ?import random ?? ? ? ? ?? ? ?? ? ?? ?引用其他模块 ?? ?
|