一、包的使用

1、什么是包

  • 指含有多个py文件的集合
  • 指内部含有__ init__ .py文件的文件的文件夹
    • 在py3中,即使没有init.py的文件,也能识别出是包

2、包的具体使用

引言:虽然在py3中文件夹内没有含有__ init __ .py也可以识别,但是考虑到兼容性的问题,建议还是在文件夹中加上 __ init __ .py

1、常规导入

  • 如果只是想使用包中某几个模块,只需按照常规from...import...的导入方式使用即可

2、直接导入包名

  • 使用import的方式直接导入包名

    代码表现:

    ​ import 包名

    这种方式导入的是包内__ init __ .py文件,通常包的开发人员会将包内模块名导入到这个文件中去,我们只需要通过’包‘点_'_ init __'点''模块名''的方式调用

二、编程思想转变

引言:在前面学习python过程中我们所写的代码都是在一个py文件中,再往后的日程里,我们将以新的方式来编写代码,通过将不同文件类型区分开来,划分出不同的文件夹,来往正式的程序开发中迈进

1、面条阶段

  • 所有代码在一个py文件中,叠放在一起

2、函数阶段

  • 根据功能的不同,封装不同的函数

3、模块阶段

  • 根据功能的不同来拆分成不同的py文件

三、软件目录开发规范

引言:为了提高程序的可读性与可维护性,我们应该为软件设计良好的目录结构,这与规范的编码风格同等重要,简而言之就是把软件代码分文件目录,做到可读性强,可维护性高

1、bin

  • bin 主要用来存放项目启动文件

    • start.py 启动文件可以存放在这个文件夹内,也可以直接存放在项目根目录下

2、conf

  • conf 主要用来存放项目配置文件

    • settings.py 存放项目的默认配置,这里的文件一般全是大写

3、core

  • core 主要用来存放项目的核心功能文件

    • src.py 项目核心功能文件

4、interface

  • interface 主要用来存放项目接口类文件,根据具体业务逻辑划分文件

    • goods、user、account 等文件

5、db

  • db 主要用来存放数据相关的文件(用户信息、用户账号)

    • userinfo、db_handler 等文件

6、log

  • log 主要用来存放项目日志类型文件(项目运行情况)

    • log.log

7、lib

  • lib 主要用来存放项目公共功能等文件

    • common.py

8、readme

  • readme 主要用来存放项目的使用说明和一些介绍

9、requirements

  • requirements 主要用来存放项目所需的模块和版本

四、常用内置模块

1、collections模块

1.具名元组

关键词:namedtuple(可迭代对象,导入的序列)

作用:可生成具体名称元组

代码用法:

导入模块:
from collections import namedtuply 用法一:表示二位坐标
point = namedtuple('坐标', ['x', 'y'])
p1 = point(1, 2)
print(p1)
print(p1.x)
print(p1.y)
-------------------------------------------------------------------------------------
坐标(x=1, y=2)
1
2 用法二:表示扑克牌
card = namedtuple('扑克牌', ['num', 'color'])
c1 = card('A', '黑')
c2 = card('A', '红')
print(c1, c1.num, c1.color)
print(c2, c2.num, c2.color) -----------------------------------------------------------------------------
扑克牌(num='A', color='黑') A 黑
扑克牌(num='A', color='红') A 红

2.双端队列

关键词:deque(可迭代对象,最大数据值)

作用:可生成双向列表,返回一个新的双向队列对象,从左到右初始化(用方法 append()) ,从 iterable (迭代对象) 数据创建。如果 iterable 没有指定,新队列为空。

代码用法:

导入模块:
from eollections import deque 用法:
q = deque(['a', 'b', 'c'], maxlen=10)
# 从右边添加一个元素
q.append('d')
print(q) # deque(['a', 'b', 'c', 'd'], maxlen=10) # 从左边删除一个元素
print(q.popleft()) # a
print(q) # deque(['b', 'c', 'd'], maxlen=10) # 扩展队列
q.extend(['i', 'j'])
print(q) # deque(['b', 'c', 'd', 'i', 'j'], maxlen=10) # 查找下标
print(q.index('c')) # 1 # 移除第一个'd'
q.remove('d')
print(q) # deque(['b', 'c', 'i', 'j'], maxlen=10) # 逆序
q.reverse()
print(q) # deque(['j', 'i', 'c', 'b'], maxlen=10) # 最大长度
print(q.maxlen) # 10

3.默认值字典

关键词:defaultdict

作用:默认字典的功能与dict基本相同,但在访问一个不存在的key时,默认字典会提供一个默认值,而不是引发异常

代码用法:

导入模块:
from eollections import defauldict 用法一:
# 使用 list 作为 default_factory ,很容易将序列作为键值对加入字典:
d = defaultdict(list)
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] for k, v in s:
d[k].append(v) print(d) # defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]}) 用法二:
# 设置 default_factory 为 int ,可以很好的用于计数
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1 print(d) # defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})

4.计数

关键词:Counter

作用:Counter 是一个 dict 的子类,用于计数可哈希对象。

代码用法:

导入模块:
from eollections import counter 用法一:统计字符串字符个数
c = Counter()
str_1 = 'sfsadfsdjklgsdla'
for i in str_1:
c[i] += 1 print(c) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1}) c2 = Counter('asfjslfjsdlfjgkls')
print(c2) # Counter({'s': 4, 'd': 3, 'f': 2, 'a': 2, 'l': 2, 'j': 1, 'k': 1, 'g': 1}) 用法二:统计列表相同数据值个数
c = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])
print(c) # Counter({'blue': 3, 'red': 2, 'green': 1})

2、time时间模块

在python中,有三种表现时间的结构

1、时间戳:1970年0时0分0秒-到现在的秒速

2、结构化时间:计算机看的,人看不适应

3、格式化时间:主要是表示时间的年月日

1.时间戳

关键词:time

作用:打印一个时间戳

代码用法:

模块导入:
import time/from time import time print(time.time()) # 1666170099.7668478

2.结构化时间

关键词:localtime

作用:打印结构化时间

代码用法:

模块导入:
import time/from time import localtime print(time.localtime()) # time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=17, tm_min=4, tm_sec=16, tm_wday=2, tm_yday=292, tm_isdst=0)

3.格式化时间

关键词:strftime

作用:以人能看懂的方式打印时间

​ 需要设置关键字打印相对的时间:

关键词 y m d H M S
对应单词 year month day hour minute sec

代码用法:

模块导入:
import time/from time import strftime print(time.strftime('%y/%m/%d')) # 22/10/19
print(time.strftime('%y-%m-%d,%H:%M:%S')) # 22-10-19,17:19:17
print(time.strftime('%y年%m月%d日%H时%M分%S秒')) # 22年10月19日17时19分17秒

4.睡眠

关键词:sleep

作用:代码执行到此处时,可以设置暂停执行的时间

代码用法:

模块导入:
import time/from time import sleep time.sleep(10)
print('怎么还没到我~') # 代码将在10秒后打印

5.datetime类

代码用法:

导入模块:
import datetime print(datetime.datetime.today()) # 2022-10-19 18:22:06.371652
print(datetime.datetime.now()) # 2022-10-19 18:24:13.345563
print(datetime.date.today()) # 2022-10-19

3、随机模块

1.随机产生小数

关键词:random

作用:随机产生一串小数

代码用法:

导入模块:
import random print(random.random) # 0.927037923859868

2.随机产生整数

关键词:randint

作用:随机产生整数,可设置区间

代码用法:

导入模块:
import random print(random.randint(1,10)) # 89

3.随机产生整数

关键词:randrange

作用:随机产生整数,可设置区间,步长

代码用法:

导入模块:
import random print(random.randint(1,10,5)) # 25

5.随机抽取样本

关键词:choice

作用:在数据库中随机抽取一个样本

代码用法:

导入模块:
import random l1 = [5, 7, 9, 12, 15]
print(random.choices(l1)) # 5 返回数据值本身
print(random.choices(l1)) # [5] 以数据的原本类型返回

6.随机抽取多个样本

关键词:sample

作用:在数据库中随机抽取多个样本,可指定数量

代码用法:

导入模块:
import random l1 = [5, 7, 9, 12, 15]
print(random.sample(l1, 3)) # [5, 7, 12]

补充:面试题

随机生成四位含有大小写英文和数字的验证码

import random
def get_code(n):
code = ''
for i in range(n):
upper_ = (chr(random.randint(65.90)))
lower_ = (chr(random.randint(97,122)))
random_int = str(random.randint(0,9))
temp = random.choice([upper_, lower_, random_int])
code += temp
return code res = get_code(4)
print(code)
----------------------------------------------------------------------
zd6K

Python基础之模块:2、包的使用和软件开发目录规范及常用内置模块的更多相关文章

  1. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

  2. python基础语法10 函数递归,模块,软件开发目录规范

    函数递归: 函数递归指的是重复 “直接调用或间接调用” 函数本身, 这是一种函数嵌套调用的表现形式. 直接调用: 指的是在函数内置,直接调用函数本身. 间接调用: 两个函数之间相互调用间接造成递归. ...

  3. python模块导入-软件开发目录规范-01

    模块 模块的基本概念 模块: # 一系列功能的结合体 模块的三种来源 """ 模块的三种来源 1.python解释器内置的模块(os.sys....) 2.第三方的别人写 ...

  4. py 包和模块,软件开发目录规范

    目录 py 包和模块,软件开发目录规范 什么是包? 什么是模块? 软件开发目录规范 py 包和模块,软件开发目录规范 什么是包? 包指的是内部包__init__.py的文件夹 包的作用: 存放模块,包 ...

  5. Python模块:Re模块、附软件开发目录规范

    Re模块:(正则表达式) 正则表达式就是字符串的匹配规则 正则表达式在多数编程语言里都有相应的支持,Python里面对应的模块时re 常用的表达式规则:(都需要记住) “ . ”   #  默认匹配除 ...

  6. python 之 软件开发目录规范 、logging模块

    6.4 软件开发目录规范 软件(例如:ATM)目录应该包含: 文件名 存放 备注 bin start.py,用于起动程序   core src.py,程序核心功能代码   conf settings. ...

  7. Python 浅谈编程规范和软件开发目录规范的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  8. python浅谈编程规范和软件开发目录规范的重要性

    前言 我们这些初学者,目前要做的就是遵守代码规范,这是最基本的,而且每个团队的规范可能还不一样,以后工作了,尽可能和团队保持一致,目前初学者就按照官方的要求即可 新人进入一个企业,不会接触到核心的架构 ...

  9. Python记录13:软件开发目录规范

    软件开发目录规范 开发一个软件,一个工程项目,一般应该具备以下的几个基本的文件夹和模块,当然,这并不是一成不变的,根据项目的不同会有一定的差异,不过作为一个入门级的新手,建议暂时按照以下的规范编写: ...

随机推荐

  1. DLL Proxy Loading Bypass AV

    DLL Proxy Loading Bypass AV 前言 感谢国外大佬开源的免杀思路,本文就是基于该文章的一次实践. https://redteaming.co.uk/2020/07/12/dll ...

  2. 获取Windows正在运行的窗口进程

    主要是获取Alt+Tab中展示的窗口 原理主要是获取窗口的样式来判断是否会在Alt+Tab中显示 具体代码如下 /// <summary> /// Alt+Tab 应用 /// </ ...

  3. 端口安全 | DHCP snooping

    1.端口安全用于防止mac地址的欺骗.mac地址泛洪攻击.主要思想就是在交换机的端口下通过手工或者自动绑定mac地址,这就就只能是绑定的mac地址能够通过. 2.通过静态的端口绑定:将mac地址手工静 ...

  4. vacuum和vacuum full的处理过程

    对于数据库系统的并发控制,KingbaseES采用MVCC(多版本并发控制)进行处理. 这种机制有一个缺点,就是随着时间的推移,数据文件中积累的dead tuples会越来越多. 怎么去清理这些dea ...

  5. KingbaseES 时间类型数据和oracle时间类型的区别

    Oracle日期时间类型有两类,一类是日期时间类型,包括Date, Timestamp with time zone, Timestamp with local time zone.另一类是Inter ...

  6. ElasticSearch介绍和基本用法(一)

    ElasticSearch 引言 1.在海量数据中执行搜索功能时,如果使用MySQL, 效率太低. 2.如果关键字输入的不准确,一样可以搜索到想要的数据. 3.将搜索关键字,以红色的字体展示. 介绍: ...

  7. 采云端&采云链:从订单协同到采购供应链,让采购供应链互联互通

    采购供应链安全从来没有像现在这样显得如此重要和紧迫,也从来没有像现在这样复杂和敏感,对企业的经营产生决定性的影响.尤其在疫情期间,采购供应链更加牵一发而动全身,成为"运筹帷幄,决胜于千里之外 ...

  8. Windows服务器限制进程CPU使用率

    在Windows server 2012 之前的服务系统 2008和2008 R2中有系统资源管理器System Resource Manager可以管理系统的CPU和内存使用情况.特别对于一些自己开 ...

  9. Linux病毒扫描工具ClamAV(Clam AntiVirus)安装使用

    在线检测木马病毒的网址:https://www.virustotal.com/gui/home/upload 一.简介 ClamAV(Clam AntiVirus)是Linux平台上的开源病毒扫描程序 ...

  10. Elastic:应用程序性能监控/管理(APM)实践

    在今天的文章里,我们将介绍Elastic的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称APM.那么到底什么是AP ...