函数以及模块的回顾
a,*b,c=[1,2,3,4,5,6]
print(a,b,c)
a,*b=range(1,7)
print(a,b)
a,*c=(1,2,3,4)
print(a,c)
结果:
1 [2, 3, 4, 5] 6
1 [2, 3, 4, 5, 6]
1 [2, 3, 4]
#形参角度的第四种传参方式,仅限关键字参数
def func(a,*args,sex="男",c,**kwargs):
print(a,args,sex,kwargs,c)
func(1,2,3,c= 4,name=1)
全局名称空间 ---存储当前py文件中的变量与值的对应关系
(临时)局部名称空间:函数定义时,会记录下函数名与函数体的对应关系只有执行时才会在内存中临时开辟的一个临时空间,存放在函数中的变量与值对应关系
内置名称空间:内置函数等
迭代器 缺点:不直观 操作不灵活 效率低(以时间换空间)
字典 以空间换时间
生成器产生:yield 生成器推导式 zip filter map reversed
global 声明全局变量
logging:---供开发人员使用
- 系统日志
- 网站日志
- 辅助日志
- 用户日志
为什么要有规范化格式目录
划归固定路径(静态):
conf:---settings.py全局变量,静态路径,变量,数据库的连接,配置.静态文件一般代码中只是引用,不会改变.基本上都是变量,基本没有函数 命名为
lib---common.py:公共组件,公用的函数和功能以便与其他的函数或者是主逻辑(业务血需求).
core---src.py:主逻辑核心逻辑文件:选项中可以直接体现出来的,贯穿整个项目的主要功能
bin---starts.py:单独的启动文件,将开启项目的功能单独放置一个文件中.---操作方便,醒目
db---类似于register文件:用户信息,数据相关,多个文件
log----logging日志文件:记录用户的访问次数转账\取钱\充钱.记录用户干了什么
文件路径用一个常量接受
代码分类:
加载快:
可读性高:
查询修改都简单:
代码规范化流程
blog
bin
starts 启动文件
将开启项目的功能单独放置在一个文件中
开启项目操作方便,醒目
conf
settings 配置文件
设置一个常量,例如路径,规划固定的路径,只修改此路径,其他路径一起变,静态文件一般代码中只引用
core
src 主函数,运行的文件
放置一些公共的函数,功能,存放一般其他函数或者业务需求
lib
common 公共组件 辅助功能的函数,装饰器log日志
主逻辑函数 主逻辑核心 逻辑文件
db
register 数据库
数据库一般存放 用户信息,以及其他的数据
log
access 日志
存放记录用户的访问次数等用户行为
提供给开发或者运维看
包括 网站日志,辅助开发日志,跟用户相关的日志
详细说明
1、先拆starts 启动文件
import sys # 与python解释器交互 引用目录
import os # 与系统交互 获取文件的绝对路径
# 导入os文件管理
BASE_PASH = os.path.dirname(os.path.dirname(__file__))
# BASE_PASH(常量不可变)动态获取路径
# __file__本文件的文件路径
# os.path.dirnam()获取上一层(父级)目录
# os.path.dirname()嵌套获取上上一层(项目)目录
# 寻找路径的顺序 内存>内置>sys
sys.path.append(BASE_PASH)
# sys.path.append 手动将BASE_PASH添加到内存路径,添加完成,直接引用
# sys.path 默认获取到python的环境变量
from core.src import run
# 从core.src包里导入run启动文件
if __name__ == '__main__':
run()
# __name__ == '__main__'本层的接口测试,防止其他文件调用
# run()运行的文件
2、settings 配置文件
import sys # 获取到模块的搜索路径
import os # 获取到文件的绝对路径
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
# BASH_PATH(常量不可变)获取到项目路径
REGISTER_PATH = os.path.join(BASE_PATH, 'db', 'register')
# REGISTER_PATH(常量不可变)获取到数据库路径
# os.path.join 路径拼接,项目路径+db路径+register
3、src 主函数,运行的文件
from conf import settings
# 从conf包里导入settings配置文件
from lib import common
# 从lib包里导入common组件文件
with open(settings.REGISTER_PATH, encoding='utf-8') as f1:
# 修改读文件的路径 settings.REGISTER_PATH 配置文件中的路径
4、common 公共组件,存放装饰器
from core import src
# 从core包里面导入src主函数
5、register 数据库
# 用于存放用户信息
6、access 日志
# 给程序员看的,用来存放用户操作信息
实战演练
sys内置模块: 当文件运行时,sys内置模块就会将一些内置模块以及当前目录的模块自动加载到内存
如何引用到一个模块最本质的原因在于这个模块名称空间在不在内存
如果直接引用不到模块,他一定不在内置或当前目录下的py文件,所以我们要将其手动添加到内存.
sys.path.append()就是手动将一些模块添加到内存,添加完毕就可以引用
logging日志进阶版
系统日志
记录操作系统 服务器的硬件性能(cup 网卡,内存运行)将你获取得到的参数通过日志写入文件中,记录云纹人员的命令
web网站日志:用户的访问次数,用户的停留时间,访问量,各地区的访问量,
开发辅助日志:defug,info模式代替print
try:
错误
except
日志记录
用户信息日志
记录用户的转账,流水等用户对系统的操作