锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

第五周 内容回顾

时间:2022-09-17 10:30:01 kk系列连接器

第五周 内容回顾

文章目录

  • 第五周 内容回顾
    • 常见的内置函数
    • 2.可迭代对象
      • 2.1.区分可迭代对象
    • 3.迭代对象
      • 3.1.迭代器值与索引值的差异
    • 4.模块简介
    • 5.导入模块的两种句型
      • 5.1.导入句式的其他使用技巧
    • 6.判断文件类型
    • 7.模块搜索顺序
    • 8.绝对导入和相对导入
      • 8.1、绝对导入
      • 8.2、相对导入
    • 9、包的概念
    • 10.软件开发目录规范
    • 11.常见的内置模块
      • 11.1、callections 模块
      • 11.2、time 时间模块
    • 11.3、datetime 模块
      • 11.4、os模块
      • 11.5、sys 模块
      • 11.6、json模块

常见的内置函数

函数名 功能
abs() 求绝对值
all() 容器中的所有数据都是True时结果为True
any() 容器中有一个数据True时结果就为True
bin() 十进制数转二进制
int() 任意制数转为十进制
bytes() 字符串转二进制编码
callable() 判断名称是否可以添加后再调用
char() 依据ASCII代表字符和数字之间的转换
dir() 获取 对象可以用句点符指出的方法
函数名 功能
divmod() 除法获取后的整数和余数
enumerate() 枚举(索引值)
eval() 能把字符串中的python代码执行
exec() 复杂的字符串可以使字符串复杂python代码执行
hash() 返回一串随机数字(哈希值)
help() 查看使用帮助
isiinstance() 判断数据是否为数据类型
pow() 幂指数
round() 四舍五入 不太准确

2.可迭代对象

迭代是更新,每次迭代都是基于上次的结果

每次结果与上次无关 不属于迭代

while True:     print('哈哈') 

每次迭代 都是基于上次的结果

n=0 while n <10:     print(n)     n =1 

2.1.区分可迭代对象

内置有__iter__该方法称为可迭代对象

可以通过句点符直接指出的东西叫内置

可迭代对象 名字
str 字符串
list 列表
dict 字典
tuple 元组
set 集合
f=open(r’usernaem.txt’,‘r’,encoding=‘utf’) 文件本身是一个迭代对象

可迭代对象可以支持for循环

3.迭代对象

内置有__iter__并且有__next__所有的对象都称为迭代器对象

正因为有迭代器对象的存在,我们才能对字典、集合这些无序类型循环取值

可迭代对象使用iter它将成为迭代器对象

无论迭代器对象调用多少次,双下次都是多少次iter之后,它们仍然是最初的迭代器本身

迭代对象迭代取值

list_1['11','23','32','53'] new_list=list_1.__iter__() print(new_list.__next__()) print(new_list.__next__()) print(new_list.__next__()) >>> 11 23 32 

迭代器反复使用情况

list_1=['11','23','32','53']
print(list_1.__iter__().__next__())
print(list_1.__iter__().__next__())
print(list_1.__iter__().__next__())
print(list_1.__iter__().__next__())
print(list_1.__iter__().__next__())
>>>
11
11
11
11
11

将迭代器对象重复迭代取值

list_1=['11','23','32','53']
new_list_1=list_1.__iter__()
print(new_list_1.__iter__().__next__())
print(new_list_1.__iter__().__next__())
print(new_list_1.__iter__().__next__())
>>>
11
23
32

__iter____next__还可以写成iter()

nuw_list_1=iter(list_1)
next(new_list_1)

3.1、迭代器取值与索引取值的差异

  • 索引取值:
    • 优点:可以反复取任意一个索引对应的值
    • 缺点:不能对无序的容器类型取值
  • 迭代取值:
    • 优点:能够对任何迭代器进行取值
    • 缺点:取值只能往后取不能往回取

4、模块的简介

模块的理解:
模块可以看成是一系列功能的结合体,使用了模块就是拥有了这结合体的所有功能

模块的分类:

  1. 内置模块:

    1. python解释器自带的,直接可以使用的模块
  2. 自定义模块:

    1. 自己写的模块
  3. 第三方模块

    1. 别人写好的模块,都是别人写好发在往上的,可以下载下来使用

    2. 例如:图形识别,语音识别,图形可视化

自定义模块创建注意事项:

  • 项目中一般py文件都会以纯英文命名
  • 并且不可以使开头数字名字
  • 项目的目录创建也嘚用英文

5、导入模块的两种句式

同一给执行文件,反复导入相同的模块。导入语句只会执行一次

导入句式一:

在此文件中代码都可已利用被导入文件名后面句点符来使用被导入文件中的功能

优点:能够通过点的形式直接用到该py文件中名字

缺点:权限太大,所有名字都能使用

import 被导入文件名

导入句式二:

使用这种句式,在调用文件内功能时,不用再在名字前面加文件名前缀

优点:指名道姓的选择需要使用的功能名字

缺点:变量名回与当前文件变量名字产生冲突

from 被导入文件名 in 被导入文件

5.1、导入句式的其他使用技巧

  1. 起别名

当导入多个模式时,出现模块文件名相同或文件中名字相同时,可以通过起别名方式,防止模块冲突

from Day21.a import name as n
from Day22.a import name as m
  1. 导入多个名字

在import后面,通过逗号隔开,可以一次导入多个名字或多个文件

from Day21 import a,b
print(a,name)
print(b.my_rang(10))
  • 导入多个模块功能时尽量分开导入,除非功能都相似,如果是导入同一模块中的名字则可以适用
  1. 全导入

在模块空间中使用,from···import句式将名字一次性被全局空间绑定,那么就可以用星号

在模块文件,还可以使用__all__=[‘‘导入的名字’’]控制*能够获取的名字填入的可以获取,没填入的不能获取

from Day21.a import *


print(name)
print(name_1)

6、判断文件类型

py文件中有一个自带的内知名__name__作为执行文件时,运行输出双下main

当py文件作为被导入文件时,输出为该文件名

主要作用:用于开发模块的作者自己测试自己的代码

if __name__ == '__main__':
    #当文件为执行文件时就会执行子代码
  • pycharm中可以编写main按tab键自动补全

7、模块查找顺序

查找顺序:

  1. 先取内存中查找
  2. 再去内置中查找
  3. 再去sys.path中查找

导入不在同一级目录下文件时

  1. sys.path.append(目标文件所在路径)
  2. 利用from···import····句式

8、绝对导入与相对导入

只要涉及到模块导入,那么sys.path永远以执行文件为准

8.1、绝对导入

由于pycharm会自动将项目根目录添加到sys.path中,所以查找模块不报错的方式就是从根路径一层层往下找(通过句点符连接下一层目录名)

如果不是用pycharm运行。则需要先将项目根目录添加到sys.path(针对项目根目录的绝对路径可以通过os模块中path.dirname获取)

from Day23.bin import start

8.2、相对导入

相对路径只能在模块中使用,不能再执行文件中使用

相对路径不用参考执行文件所在的路径,直接以当前模块文件路径为准

相对路径在项目比较复杂的情况可能会出错

符号 功能
. 表示当前路径
.. 表示上一层路径
../.. 表示上上层路径
from..conf import settings

9、包的概念

如何理解包:

专业的角度:内部含有__inter__.py目录

直观角度:就是一个文件夹

包的作用:

内部存放多个py文件(模块文件),仅仅只是为了更方便管理模块文件

具体使用:

语句格式:import 包名

导入包名其实导入的是里面的双下init.py 文件(该文件相当于是这个包的关键,它那有什么 我们才能从它那获取什么)

在python3解释器中,其实包文件中有没有__inter__.py已经无所谓了,都是可以当作包
但是在python2版本解释器中,为奴见下面必须要有__inter__.py文件才能当作包

10、软件开发目录规范

目录名 其内置文件 作用
bin strat.py 存储启动程序
conf settings.py 存储程序的配置文件
corve src.py 存储程序的核心功能文件
lib commone.py 存储程序的公共功能文件
db userinfo.jason 存储程序的数据
log log.log 存储程序的
interface user.pt order.py goods.py 存储程序接口的文件
readem.txt / 存储程序的说明,广告之类的
requierments.txt / 存户程序中使用的第三方模块名以及对应的版本

拓展知识

我们在编写代码的时候,可以不完全遵循上面的文件名。

start.py可以放在bin文件下也可以直接放在项目根目录

db目录 之后会被数据库软件替代

log目录之后也会被专门的日志服务替代

11、常见的内置模块

11.1、callections 模块

  1. namedtiple 具名

生成可以使用名字来访问元素内容得tuple

from collections import namedtuple
point=namedtuple('三维坐标'['x','y','z'])
res_1=point(2.5,6)
print(re_1,res_2)
  1. deque 双端队列

可以从左右两边添加或删除元素

from collections import deque
dt_1=deque()
dt_1=append(111)
dt_1=append(222)
dt_1=append(33)
dt_1=appendleff(444) # 从左变添加元素
print(dt1)
dt1.popleft() #从左边删除
  1. orderedDict有序字典

可以将字典变得有序,顺序按键值添加得顺序

from collections import ordered Dict
od_1=orderedDict([('a',1),('b',2),('c',3)])
  1. defaultdict

可以给字典键值添加一个默认得数据类型

lst= ['A', 'B', 'C', 'D', 'e']
dic = defaultdict(int)
res=1
for i in lst:
    dic[i] +=1


print(dic)
>>>>>>>>>>>>>>>>>>>>>>>>>>
defaultdict(<class 'int'>, { 
        'A': 1, 'B': 1, 'C': 1, 'D': 1, 'e': 1})
  1. counter 元素计数

可以将容器中元素进行计数,元素与个数组为键值对,返回一个字典

list=[5,4,4,6,4,5,6,1,3,5,1,1,]
res = 'abcdeabcdabcaba'
from collections import Counter
res1 = Counter(res)
res2=Counter(list)
print(res1,res2)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Counter({ 
        'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1}) Counter({ 
        5: 3, 4: 3, 1: 3, 6: 2, 3: 1})

11.2、time 时间模块

  1. time.time

输出一个时间戳

import time

print(time.time)
  1. time.gmtime 结构化时间

输出当前 结构化时间 或将时间戳转结构化时间

import time
print(time.getime())
  1. time.strftime格式化时间

输出当前格式化时间,或将结构化时间转为格式化时间

print(time.strftime('%y-%m-%d %H:%M:%S'))
res=time.localtime()
print(res)
print(time.strftime('%y-%m-%d %H:%M:%S',res))
  1. time.strptime格式化转结构化

格式化时间转为结构化时间

print(time.strptime('22-07-14 18:36:04','%y-%m-%d %H:%M:%S'))

11.3、datetime 模块

与time模块类似,都是与时间操作有关

  1. datetime获取精确的时间
import datetime

res=(datetime.datetime.today()) #取现在的时间 非常精确
print(res)
print(res.date())

在提取中的时间中可以通过句点符 关键字来提取对应的值

关键字 取值
year
moth
weekday 第几周
isoweekday 第几工作日
  1. timedelta()通过括号内内加参数来定义时间差
import datetime
res=(datetime.datetime.today())
time_1=datetime.timedelta(hours=24)
res_2=(res + time_1)  # 通过时间加时间差 得出将来时间
print(res_2)  
print(res_2 - res)  #通过将来时间 减现在时间 得出时间差

时间功能扩展

import datetime
print(datetime.datetime.now()) # 获取当前东八区时间
print(datetime.datetime.utcnow()) # 获取0时区时间
print(datetime.datetime(2023, 7, 15, 15, 16)) 定义一个时间

11.4、os模块

os模块主要是根据当前程序所在的操作系统打交道

函数名 功能
mkdir 创建单极目录
makdirs 创建多级目录
mdir 删除单级目录
removedirs 删除多级目录
lisdir 获取指定路径下目录与文件(列表形式返回)
rename 重命名指定文件
remove 删除指定文件
getcwd 查看当前操作路径(绝对路径)
chadir 操作路径
函数名 功能
path.abspath(__file__) 获取当前文件的绝对路径
path.dirname(__file__) 获取当前文件目录的绝对路径
exists 判断是否存在该目录,文件
isdir/isfile 判断是否存在该目录/文件
path.join 拼接路径专用

11.5、sys 模块

sys模块主要是根python解释器打交道的

  • sys.path 查看程序环境变量
  • sys.cersion 查看python 解释器 当前版本信息
  • sys.platform 查看当前平台

查看程序环境变量 解释器等信息

import sys
print(sys.path) # 查看程序环境变量
print(sys.version)
print(sys.platform)
  • sys.argv

利用python解释器终端运行时该文件,可以接受外界输入

res=(sys.argv)
print(res)
if len(res)==3
username = res[1]
    password = res[2]
    if username == 'kk' and password == '123':
        print('您可以正在执行该文件')
    else:
        print('用户名或密码错误')
else:
    print('请填写用户名和密码')

11.6、json模块

json模块 也称为序列化模块
json模块是不同编程语言交互必备的模块

json数据格式是字符串

json格式的数据引号都是双引号

关键字 功能
dumps 将其他数据转为json格式字符串
loads 将json格式字符串转为对应数据类型
dump 将其他数据以json格式字符串写入文件
load 将文件中json格式字符串读取出来转化为对应的数据类型
  • dumps 转为json格式字符串
  • loads 转为对应数据类型
import json
dict_1={ 
        'name':'kk','age':'18','gender':'male'}
res=json.dumps(dict_1)  # 利用 dumps将字典转为json 字符串 形式
print(res)
with open(r'username','w',encoding='utf')as f,open(r'username','r',encoding='utf')as read_1:
    f.write(res)  # 将json字符串形式的 字符串写入文件中
    f.flush()  # 保存文件
    res_1=read_1.read()  #将写入的 jason 字符串读出
print(json.loads(res_1)) # 利用loads转回字典
  • dump 转为json格式字符串并写入
  • load 取出并转为对应数据类型
import json
dict_1={ 
        'name':'kk','age':'18','gender':'male'}
with open(r'username','w',encoding='utf')as f,open(r'username','r',encoding='utf')as read_1:
    json.dump(dict_1,f)  # 利用dunmo直接将字典变为 json格式字符串并自动传入文件中
    f.flush()  # 保存
    print(json.load(read_1)
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章