热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

函数模块回顾

函数以及模块的回顾全局名称空间存储当前py文件中的变量与值的对应关系(临时)局部名称空间:函数定义时,会记录下函数名与函数体的对应关系只有执行时才会在内存中临时开辟的一个临时空间,

函数以及模块的回顾

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:---供开发人员使用


  1. 系统日志

  2. 网站日志

  3. 辅助日志

  4. 用户日志


为什么要有规范化格式目录



  1. 划归固定路径(静态):

    conf:---settings.py全局变量,静态路径,变量,数据库的连接,配置.静态文件一般代码中只是引用,不会改变.基本上都是变量,基本没有函数 命名为


  2. lib---common.py:公共组件,公用的函数和功能以便与其他的函数或者是主逻辑(业务血需求).


  3. core---src.py:主逻辑核心逻辑文件:选项中可以直接体现出来的,贯穿整个项目的主要功能


  4. bin---starts.py:单独的启动文件,将开启项目的功能单独放置一个文件中.---操作方便,醒目


  5. db---类似于register文件:用户信息,数据相关,多个文件


  6. 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日志进阶版



  1. 系统日志

    记录操作系统 服务器的硬件性能(cup 网卡,内存运行)将你获取得到的参数通过日志写入文件中,记录云纹人员的命令


  2. web网站日志:用户的访问次数,用户的停留时间,访问量,各地区的访问量,


  3. 开发辅助日志:defug,info模式代替print

    try:

    ? 错误

    except

    ? 日志记录


  4. 用户信息日志

    记录用户的转账,流水等用户对系统的操作



推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
author-avatar
PearlLisa530
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有