# python study day11
# collections 内建集合模块
# namedtuple 创建自定义tuple对象,规定tuple元素个数,使用属性引用元素
# from collections import namedtuple
# Point = namedtuple('Point', ['x', 'y'])
# p = Point(1, 3)
# p2 = Point(-1, -3)
# print(p.x, p.y) #>>> 1 3
# deque 双向list列表,支持appendleft()和popleft()在头部添加删除元素
# from collections import deque
# q = deque(['a', 'b', 'c'])
# q.appendleft('y')
# print(q) #>>> deque(['y', 'a', 'b', 'c'])
# defaultdict key不存在,返回自定义默认值
# from collections import defaultdict
# dd = defaultdict(lambda : 'N/A') # 参数函数
# print(dd['nokey']) #>>> 'N/A
# OrderedDict 按照插入顺序排序。可以实现一个FIFO(先进先出)
# from collections import OrderedDict
# d = OrderedDict([('a',1), ('c',2), ('b',3)])
# ChainMap 实现参数的优先级查找,先查命令行参数,再查环境变量,最后使用默认参数
# from collections import ChainMap
# import os, argparse
# # 构造缺省参数:
# defaults = {
# 'color': 'red',
# 'user': 'guest'
# }
# # 构造命令行参数:
# parser = argparse.ArgumentParser()
# parser.add_argument('-u', '--user')
# parser.add_argument('-c', '--color')
# namespace = parser.parse_args()
# command_line_args = { k: v for k, v in vars(namespace).items() if v }
# # 组合成ChainMap:
# combined = ChainMap(command_line_args, os.environ, defaults)
# # 打印参数:
# print('color=%s' % combined['color'])
# print('user=%s' % combined['user'])
# # 同时传入命令行参数和环境变量,命令行参数的优先级较高:
# # $ user=admin color=green python3 use_chainmap.py -u bob
# # color=green
# # user=bob
# Counter 计算器
# from collections import Counter
# print(Counter('hello')) #>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})
# c = Counter()
# for ch in 'world':
# c[ch] += 1
# c.update('hello')
# print(c) #>>> Counter({'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1, 'h': 1, 'e': 1})
# Base64 是一种任意二进制到文本字符串的编码方法,常用于URL、Cookie、网页传输少量二进制数据
# import base64
# print(base64.b64encode(b'binary\x00string'))
# #>>> b'YmluYXJ5AHN0cmluZw==' 二进制数不是3的倍数自动补足,'='号表示补的字节,解码会去掉
# # url safe base64编码解决字符+和/在URL中不能直接作为参数,替换为-和_
# print(base64.b64encode(b'i\xb7\x1d\xfb\xef\xff')) #>>> b'abcd++//'
# print(base64.urlsafe_b64encode(b'i\xb7\x1d\xfb\xef\xff')) #>>> b'abcd--__'
# base64.urlsafe_b64decode('abc--__')
# 去掉=的base64解码函数(Base64把3个字节变成4个字节,Base64编码永远是4的倍数)
# import base64
# def saef_base64_decode(s):
# s += (len(s) % 4) * (b'=')
# return base64.b64decode(s)
# assert b'abcd' == safe_base64_decode(b'YWJjZA=='), safe_base64_decode('YWJjZA==')
# struct模块解决bytes和其他二进制数据类型的转换
# import struct
# print(struct.pack('>I', 10240099)) # pack把任意数据类型变成bytes
# # '>'表示字节顺序是big-endian,'I'表示4字节无符号整数 >>> b'\x00\x9c@c'
# print(struct.unpack('>IH', b'\xf0\xf0\xf0\xf0\x80\x80'))
# # IH表示依次变为I:4字节无符号整数和H:2字节无符号整数
# import struct
# # 取BMP Windows位图文件前30个字节
# s = b'\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\
# x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'
# print(struct.unpack('<ccIIIIIIHH', s))
# #>>> (b'B', b'M', 691256, 0, 54, 40, 640, 360, 1, 24)
# # b'B'、b'M'说明是Windows位图,大小为640x360,颜色数为24
# -*- coding: utf-8 -*-
# import base64, struct
# bmp_data = base64.b64decode('Qk1oAgAAAAAAADYAAAAoAAAAHAAAAAoAAAABABAAAAAAADICAAASCwAAEgsAA' +
# 'AAAAAAAAAAA/3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3/' +
# '/f/9//3//f/9//3//f/9/AHwAfAB8AHwAfAB8AHwAfP9//3//fwB8AHwAfAB8/3//f/9/A' +
# 'HwAfAB8AHz/f/9//3//f/9//38AfAB8AHwAfAB8AHwAfAB8AHz/f/9//38AfAB8/3//f/9' +
# '//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9//3//fwB8AHz/f' +
# '/9//3//f/9/AHwAfP9//3//f/9//3//f/9//38AfAB8AHwAfAB8AHwAfP9//3//f/9/AHw' +
# 'AfP9//3//f/9//38AfAB8/3//f/9//3//f/9//3//fwB8AHwAfAB8AHwAfAB8/3//f/9//' +
# '38AfAB8/3//f/9//3//fwB8AHz/f/9//3//f/9//3//f/9/AHwAfP9//3//f/9/AHwAfP9' +
# '//3//fwB8AHz/f/9/AHz/f/9/AHwAfP9//38AfP9//3//f/9/AHwAfAB8AHwAfAB8AHwAf' +
# 'AB8/3//f/9/AHwAfP9//38AfAB8AHwAfAB8AHwAfAB8/3//f/9//38AfAB8AHwAfAB8AHw' +
# 'AfAB8/3//f/9/AHwAfAB8AHz/fwB8AHwAfAB8AHwAfAB8AHz/f/9//3//f/9//3//f/9//' +
# '3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//3//f/9//38AAA==')
# def bmp_info(data):
# if data[:2] == b'BM':
# pic = struct.unpack('<ccIIIIIIHH', data[:30])
# return {
# 'width': pic[-4],
# 'height': pic[-3],
# 'color': pic[-1]
# }
# else:
# raise TypeError('Not a BMP file!')
# bi = bmp_info(bmp_data)
# assert bi['width'] == 28
# assert bi['height'] == 10
# assert bi['color'] == 16
# print('ok')
# hashlib 摘要算法又称哈希算法、散列算法。如 MD5、SHA1;比较安全的SHA256、SHA512(但效率低)
# 对内容加密防止获取或计算摘要检测篡改
# import hashlib
# md5 = hashlib.md5()
# md5.update('how to use md5 in python hashlib?'.encode('utf-8')) # 与下述效果一致
# # md5.udate('how to use md5'.encode('utf-8')) md.update('in python hashlib'.encode('utf-8'))
# print(md5.hexdigest()) # 32w位16进制数字符串表示>>> d26a53750bc40b38b65a520292f69306
# sha1 = hashlib.sha1()
# sha1.update('how to use sha1'.encode('utf-8'))
# print(sha1.hexdigest()) # 40位16进制字符串表示 >>> 625b0c42c9373712fbe043348cd38e7c77ef58ff
# -*- coding: utf-8 -*-
# db = {
# 'michael': 'e10adc3949ba59abbe56e057f20f883e',
# 'bob': '878ef96e86145580c38c87f0410ad153',
# 'alice': '99b1c2188db85afee403b1536010c2c9'
# }
# import hashlib
# def login(user, password):
# pw = hashlib.md5()
# pw.update(password.encode('utf-8'))
# return db[user] == pw.hexdigest()
# print(login('michael', '123456'))
# 对弱口令避免逆推可以添加额外字符,俗称“加盐”。对相同密码表现不同摘要可以考虑添加不可变的账号
# def calc_md5(password):
# return get_md5(password + 'the-Salt')
# hmac 可代替以上salt算法
# import hmac
# message = b'hello, world!'
# key = b'secret'
# h = hmac.new(key, message, digestmod='md5') # key,message都是bytes类型,也可以h.update()
# print(h.hexdigest()) #>>> 9bdf721671202655abb36113919a2946
相关推荐
【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)
pandas对纯文本的读取提供了非常强力的支持,参数有四五十个。这些参数中,有的很容易被忽略,但是在实际工作中却用处很大。
Python廖雪峰实战web开发(Day6-编写配置文件)
通常,一个Web App运行的时候都要读取配置文件,比如数据库的名字,口令等,在不同的环境中运行,可以读取不同的配置文件。 由于Python本身语法简单,完全可以用源代码来实现配置。 默认的配置文件应该完全符合本地开发环境,这样,无需任何设置,就可以立刻启动服务器。 创建默认的配置文件config_default.py: #!/usr/bin/env...
C#实战:如何从零构建一个轻量级软PLC梯形图编辑器(附完整源码)
本文详细介绍了如何使用C#从零开始构建一个轻量级软PLC梯形图编辑器。内容涵盖项目架构设计、GDI+图形渲染、编辑交互实现以及核心的扫描执行引擎开发,并提供了定时器、计数器等高级功能的实现思路与完整源码,为开发者深入工业自动化领域提供了实战指南。
廖雪峰python教程习题记录1(高级特性&函数式编程)
高级特性 1.请使用迭代查找一个list中最小和最大值,并返回一个tuple: # -*- coding: utf-8 -*- def findMinAndMax(L): if L==[]: return (None, None) else: x=L[0] y=L[0] for i in L: if i>x: x=i elif i<.
433MHz无线通信避坑指南:如何解决信号干扰和误码问题
本文深入探讨433MHz无线通信中的信号干扰和误码问题,提供从射频前端设计到协议优化的全链路解决方案。通过天线匹配、电源噪声抑制、曼彻斯特编码改进及实时频点切换等技术,显著提升通信稳定性和距离。适合智能家居和工业无线控制系统的开发者参考。
Unity之OpenXR+XR Interaction Toolkit接入HTC Vive
目前VR领域,最流行的设备要当属HTC VIVE了。以前在Unity端接入HTC VIVE设备时,都是通过SteamVR+VRTK来接入的。但是随着Unity的版本升级和OpenXR标准的流行,再加上VR设备的逐渐增多。SteamVR+VRTK的方式已经无法更好的满足大家的需求。
廖雪峰day-10-day13逻辑总结即问题回顾
day-10 主要有一下几个函数: /register:转到这个处理函数,加载对应的html模板,然后用户开始填写他的注册信息 /api/user:如果上面的注册信息都符合要求,那么将会保存用户信息,同时给浏览器发送cookie,cookie中包含一个列表,列表有userid和登录状态所能保持的最后时间以及一个hashlib加密的信息(userid,password,最后时间等)user2cook...
论文分栏前后内容不连续?教你word如何删除分节符
问题 当我们在写论文的时候,很多期刊的模板都是两栏的格式,但有的时候我们插入的图像尺寸可能太大,两栏格式放不下,因此需要将其以一栏的格式出入,如下: 但当我们把图片删除后,再将其转换成两栏格式,前后内容就出现不连续的情况: 正常情况下应该是如下: 正确处理方式 里面有个分页符,把分页符去掉,或者把你的文字全部复制到记事本里,然后重新复制回word就可以取消原有的格式了。 删除分节符的方法(以word 2019为例) -点击菜单栏上的“视图”,点击“大纲视图”。 可以看到word文档以整列的形式展开:
Python廖雪峰实战web开发(Day11-编写日志创建页MVVC)
在编写完ORM框架,web开发框架之后,后端代码写起来就相对的比较轻松了,比如现在编写一个关于用来创建blog的API: #检测有否登录且是否为管理员 def check_admin(request): if request.__user__ is None or request.__user__.admin: raise APIPermi...
YOLO26改进策略【卷积层】| DWRSeg :高效获取多尺度上下文信息,二次改进C3k2
本文记录的是利用DWR 模块改进 YOLO26 的特征提取部分。(Dilation-wise Residual)通过两步残差流程(区域残差化-语义残差化)与分支化空洞卷积结合,引导解码器处理特征与跳接特征的多尺度精准融合。本文利用模块,通过区域残差化生成简洁区域型特征图以简化融合基础,再通过分支化空洞卷积捕捉多尺度空间上下文,同时依托残差连接保留原始特征信息,对YOLO26中不同尺度目标特征进行针对性强化、抑制无效背景特征干扰,在特征融合阶段实现多尺度语义与细节信息的高效互补,避免传统多感受野卷积的冗余计算
Ubuntu上通过FinalShell或Asbru访问CentOS虚拟机
使用FinalShell或Asbru远程连接虚拟机
Python廖雪峰教程学习笔记:Day11
前言 养成一个好的习惯只需要坚持21天,Day11 这两天主要学习一下面向对象的高级编程。 使用__slots__ 由之前学习类的定义和实例的创建,我们可以给实例绑定不同的属性,例如: class Student(object): pass s = Student() s.name = 'Tom' # 动态给实例绑定一个属性 print(s.name) # Tom 如果我们只允许对Studen...
AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研
在当今的人工智能时代,大模型技术的迅猛发展为各行各业带来了前所未有的变革。这些大模型,以其强大的语言理解和生成能力,正在逐步成为智能化应用的核心。然而,如何高效地利用这些大模型,构建出满足各种需求的应用,仍然是一个具有挑战性的问题。DB-GPT,作为一个开源的AI原生数据应用开发框架,应运而生,旨在简化大模型应用的开发过程,让构建智能化应用变得触手可及。本文将深入介绍DB-GPT的核心功能、关键特性,并通过实战操作,展示如何利用DB-GPT进行数据应用开发。DB-GPT是一个开源的AI原生数据应用开发框架。
廖雪峰python实战day11
在app.py中,编辑blog功能,只对管理员权限用户开放,具体如下:@asyncio.coroutine def auth_factory(app, handler): @asyncio.coroutine def auth(request): logging.info('check user: %s %s' % (request.method, request....
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
廖雪峰Python学习笔记day10
学习笔记day9 # python study day10 # 正则表达式 # \d # 匹配一个数字 # \w # 匹配一个字母或数字 # . # 匹配任意字符 # * # 匹配0个或任意多个字符 # + # 匹配至少一个字符 # ? # 匹配0个或1个字符 # {n} # 匹配n个字符 # {n, m} # 匹配n-m个字符 # \s # 匹配一个空格(包括Tab空白符),\s+ 表示至少一个空格 # [] # 匹配范围,[0-9a-zA-Z\_] 可以匹配一个数字、字母或下划线 # A|B # 匹配
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
廖雪峰Python学习笔记day15
学习笔记day14 # python study day15 # 一般不同平台邮件收发过程 # 发件人 -> MUA(Mail User Agent——邮件用户代理) -> # MTA(Mail Transfer Agent——邮件传输代理) -> 若干个MTA -> # MDA(Mail Delivery Agent——邮件投递代理) <- MUA <- 收件人 # SMTP 邮件发送协议,python提供 email(负责构造邮件)、smtplib(负责发送邮件)模
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
廖雪峰Python学习笔记day9
学习笔记day8 # python study day9 # 进程和线程。实现多任务的方式 # 1、多进程模式 # 2、多线程模式 # 3、多进程+多线程模式 # multiprocessing 跨平台多进程模块。Unix/Linux/Mac环境下可以使用fork创建子进程 # from multiprocessing import Process # import os # def run_proc(name): # 子程序要执行的代码 # print('Parent process %s (
廖雪峰Python学习笔记day1
学习参考自 廖雪峰Python教程 # 廖雪峰学习python 3.x # vscode 快捷当行注释 CTRL + / 或者 CTRL + K + C # vscode 快捷取消注释 CTRL + / 或者 CTRL + K + U # vscode 快捷下方插入行 CTRL + Enter # 交互模式下('>>>')输入一行代码,执行一行 # 33 + 2 # >>> 35 # 命令行模式下,直接运行.py文件,一次性执行所有代码 # print(33.1*3)
Python廖雪峰教程学习笔记:Day2
前言 养成一个好的习惯只需要坚持21天,Day2 使用list和tuple list 列表 list是一种有序的集合,可以随时添加和删除其中的元素。它的表示用[]。list = [] 变量name就是一个list。用len()函数可以得到list的长度,即该list当中有多少个元素。 list中元素的访问采用索引,⚠️注意索引是从0开始的,当索引超出list的长度,Python会报一个Inde...
廖雪峰 Python教程 学习笔记_Day01
廖雪峰 Python教程 学习笔记_Day02
Python廖雪峰教程学习笔记:Day5
前言 养成一个好的习惯只需要坚持21天,Day5 高级特性 切片 迭代 列表生成器 生成器 切片 取一个list和tuple的部分元素可以用切片快速实现。 L为一个list,L[0:3]表示从索引0开始取到索引3为止,但不包括索引3,即索引0,1,2三个元素。 如果第一个索引是0,还可以省略为L[:3],运行结果和L[0:3]一样。 如果索引从1开始,取出两个元素则可以写作L[1:3],运行...
Python廖雪峰教程学习笔记:Day15
前言 养成一个好的习惯只需要坚持21天,Day15 多进程 Unix/Linux操作系统提供了一个fork()系统调用。一般我们遇到的函数都是调用一次便返回一次,这里的fork()调用一次返回两次。因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。 子进程永远返回0,而父进程返回子进程的ID。 fork调用,一个进程在接到新任务时就可以复制出一个子...
Python廖雪峰教程学习笔记:Day14
前言 养成一个好的习惯只需要坚持21天,Day14 什是JSON? JSON是轻量级的文本数据交换格式,指的是 JavaScript 对象表示法(JavaScript Object Notation),类似XML但又比 XML 更小、更快,更易解析。 JSON语法 JSON数据的书写格式是:"名称":“值”,例如: "name":"汤姆" JSON的值可以是:数字、字符串、逻辑值、数组、对象和n...
Python廖雪峰教程学习笔记:Day4
前言 养成一个好的习惯只需要坚持21天,Day4 函数 编程中,函数的调用、定义在一定程度上可以简化功能的实现,降低程序的复杂度。 调用函数 Python中内置了许多有用的函数,我们在调用一个内置函数的时候,需要知道函数的名称和参数。 内置函数-Python 3.7.6文档 调用abs()函数: 调用函数的数量,如果传入的参数数量不对,会报TypeError错误: 如果传入参数的数量是对的,但...
廖雪峰python3教程-学习笔记1-python简介
廖雪峰python3教程-学习笔记1-python简介Python简介 day 1 # 学习的开始 本人环境工程专业,曾留学美国,目前就职于某中央直属事业单位,在人工智能、大数据、机器学习、深度学习席卷全球的当下,领导固执的想法下单位仍然以很古老的方式在运作,自己很想给自己、给部门带来一些新的思维方式,新的解决问题的方式。今天第一天学习python3,从廖雪峰python3教程开始,希望自己可以一...

11万+



被折叠的 条评论
为什么被折叠?



