模块 import from ... import ... 循环导入 相对导入 绝对导入 软件开发目录规范 重点:********************************************* 模块的查找顺序: 1,先从内存中找 2,内置中找 3,sys.path中找(环境变量): 要分清楚谁是执行文件,谁是被导入文件 注意:它里面是一个大列表,里面放了一堆文件路径,第一个路径永远是执行文件。 *************************************************************** 一:模块基础知识: 定义:一系列方法或者功能的结合体 模块的三种来源: 1:内置(python解释器自带的) 2:第三方(别人写的) 3:自定义的(自己写的) 模块的四种表现形式: 1, 文件也可以作为模块(一个py文件也可作为一个模块) 2,把一系列的模块组织在一起的文件夹 文件夹下有一个__init__.py文件,包:就是一系列py文件的结合体 3,被编译为共享库或DLL的C或C++扩展(了解) 4.使用C编写并连接到python解释器的内置模块 使用模块的意义: 1,拿来主义,极大的提高开发效率 2,使用自定义模块:重新内容较大时,可以分为不同的模块 便于查找,修改,调用,维护 ,降低成本 如何使用:(注意) 一定要区分那个是执行文件,那个是被导入文件 二:import 1,导入模块:(import.模块名) import.time 注意:导入多个模块时,import os,time,md (不推荐) 推荐用下面这种:(几个模块没有联系的情况下 应该分多次导入) import time import os import sys 1,通常导入模块的句式会写在文件的开头 2,当模块名字比较复杂的情况下 可以给该模块名取别名 *** 1.只要你能拿到函数名 无论在哪都可以通过函数加括号来调用这个函数(会回到函数定义阶段 依次执行代码) *** 2.函数在定义阶段 名字查找就已经固定死了 不会因为调用位置的变化而改变 三:from ...import... from md import money,read,change from md import money 注意:第二次又导入模块money,或者多次导入时,会沿用第一次导入时创建的名称空间去直接查找结果(沿用第一次的结果) 1,首先会创建执行文件md1.py的名称空间 首次导入md.py文件的模块时 1,运行md.py 2,将产生的名字存放到md.py 名称空间中 3,直接拿到指向模块md.py名称空间中某个值得名字 # 补充 from md1 import * # 一次性将md1模块中的名字全部加载过来 不推荐使用 并且你根本不知道到底有哪些名字可以用 print(money) print(read) print(change) 注意: __all__可以指定当所在py文件被当做模块导入的时候 可以限制导入者能够拿到的名字个数 money = 1000 def read1(): print(‘md‘,money) def read2(): print(‘md模块‘) read1() def change(): global money money = 0 __all__ = [‘money‘,‘read1‘,‘read2‘] 四:循环导入: 1,循环导入在程序实际阶段就应该避免 2,解决循环导入的问题: 1,将循环导入的句式写在文件最下方 2,函数内导入模块 五:绝对导入和相对导入:******* 绝对导入必须依据执行文件所在的文件夹路径为准 1.绝对导入无论在执行文件中还是被导入文件都适用 相对导入 .代表的当前路径 ..代表的上一级路径 ...代表的是上上一级路径 注意相对导入不能再执行文件中使用******* 相对导入只能在被导入的模块中使用,使用相对导入 就不需要考虑 执行文件到底是谁 只需要知道模块与模块之间路径关系 六:项目目录规范: 1,bin>>start (执行>>>启动文件) 2,conf>> settings (公共>>>配置文件) 3,core>> src (主程序>>功能逻辑文件) 4,lib>> common 公共的资源方法 5, db>> header 数据库 数据资源文件 6,log 日志补存: print(__name__) 当文件被当做执行文件执行的时候__name__打印的结果是__main__ 当文件被当做模块导入的时候__name__打印的结果是模块名(没有后缀) def func1(): print(‘1243243‘) def func2(): print(‘你最帅‘) if __name__ == ‘__main__‘: func1() func2()
原文地址:https://www.cnblogs.com/Fzhiyuan/p/11196462.html
时间: 2024-11-11 12:29:27