1 python程序结构
1 #python程序结构从小到大依次为: 2 #表达式、语句、函数、类、脚本文件(模块)、包 3 4 #模块(Module):为了有利于命名空间的分割,一个项目中同名对象可以放在不同的模块中。 5 #如数据库访问模块、订单访问模块、共享服务或数据(把一部分数据放在单独的模块中,给其他模块共用) 6 7 #开发中代码的组织,一个顶层文件:包括主要控制流用于启动程序 8 #若干个支持文件(模块),提供功能组件以备顶层文件使用 9 10 #如何利用其他模块? 11 #用import指令。导入机制import指令运行是执行并载入文件 12 #第一步:标识被载入的文件 13 #第二步:分配模块变量名称 14 15 #如在a.py文件中的内容如下 16 greeting = ‘hello‘ 17 def print_hello(): 18 print(greeting) 19 20 print_hello() 21 22 #文件b.py中的内容如下 23 import datetime.datetime 24 now = datetime.datetime.now() 25 def print_b_time(n): 26 print(‘当前时间:{}‘.format(n)) 27 28 #如果模块a中想使用模块b中定义的内容 29 #把文件b中的所有内容都导入到文件a中的写法import b.py 30 #print(b.now) 31 32 #模块导入的过程 33 #环节一:查找模块文件,按照特定的搜索顺序; 34 #环节二:把找到的模块文件编译成字节码文件,缓存以提高调用速度,若被导入的模块内容变动或python版本变动,会重新编译,编译好的内容隔离存储于__pycache__目录(缓存); 35 #环节三:运行代码构造器定义的对象。 36 37 38 #模块搜索路径: 39 #1 程序主目录:主目录下的子目录,这里就涉及另外一个概念,包 40 #2 系统环境变量 PYTHONPATH 设定的目录 41 #3 前两步都找不到,就去标准库中找,即Python安装的目录的Lib目录下 42 #4 在Python运行环境创建一个配置文件 .pth文件内容指定目录(仅做了解),文件里配置,在哪个目录下,有什么模块 43 #5 第三方扩展 site-packages目录下安装的第三方扩展,,在Python安装目录或虚拟环境目录 44 45 #模块的命名必须是合法的标识符 46 47 #模块的使用import 48 #import product 用这种方式可以把整个模块导入 49 #还可以只导入模块的特定成员 50 #from product.pay import a,b,c 这样就可以直接用a,b,c了 51 #但是为了避免同名对象的覆盖,还是在引用对象的时候带上模块名 52 53 54 #由于模块导入操作只执行一次,被导入的模块代码如果后续有修改,修改部分不能映射到执行环境中 55 #可以使用importlib.reload 模块 重新导入模块 56 #在不终止当前程序运行的情况下重新导入模块 from importlib import reload 模块 57 #reload(product) 要求参数必须是模块,只能应用于import语句导入的部分 58 #from xx import 不适用于reload() 59 60 61 #package包管理 62 #当程序更加复杂的话,可以引入包,包就相当于是文件夹 63 #包含代码的目录 64 #报名自动作为命名空间的一部分 65 66 #从其他包中导入模块的写法 67 #import product.category 68 #print(product.category.name) 在当前模块下用的时候,报名、模块名要写全。 69 70 71 #以相对路径方式导入模块 72 #从模块当前路径下开始找,只能使用from的方式导入 73 #from . import sqlite 74 #from . sqlite import dburl 75 76 # . 代表当前文件路径 77 # .. 代表上级目录