python
文章平均质量分 52
Youkii-Chen
https://blog.m-jay.cn/
展开
-
Sqlalchemy 2.x exists 使用方法
在sqlalchemy 2 中使用 exists 的方法。 Query 接口已经被遗弃,找了半天相关的文档,只有复杂查询的例子。这里提供一个简单查询,单纯用于判断数据是否存在的例子。此方法可以只返回一个 True 或者 False。但是,到了 sqlalchemy 2.0。原创 2023-03-09 22:01:25 · 977 阅读 · 1 评论 -
为logging开启颜色输出 python
我们都知道python自带的logging模块只能记录普通的白色,这样看起来控制台显得有点杂乱无章。有没有方法改变输出等级的颜色呢?这样的信息检索起来效率更高点。当然是有的,而且利用logging自带的特性就能完成。原理我们这里主要是利用logging的Filter类,此类可以控制是否输出日志,同时修改日志的上下文环境。先来看下面的代码:import loggingfrom random import randintclass MyFilter(logging.Filt.原创 2021-10-10 00:01:14 · 841 阅读 · 1 评论 -
Python 在 heapq 中遇到的坑和报错
Python 的 Heapq 可以用来做快速排序使用, 例如我想做一个根据优先级决定处理顺序的功能, 初始化了一个 list:l = [ (23, socket.socket()), (25, socket.socket()), (30, socket.socket()), (26, socket.socket()), (13, socket.socket()),]那么当我在heapq.heappush 或者 pop 的时候就会出现问题, 原因是这个 .原创 2021-07-21 23:34:23 · 555 阅读 · 0 评论 -
专门为micropython设计的logging模块
micropython-ulogger在 micropython 上做logging不是一件容易的事情, micropython 有很多尚未完成的接口, 因此能记录到的日志内容非常有限, 我根据 micropython 的情况设计了这个 ulogger 的库.特色:在 micropython 中, 由于单片机的计算能力有限, 一切事情都需要快速地被处理和响应, 因此本模块设计的目的就是减少无所谓的操作. 因此本模块会和 CPython 的标准库 logging 有很大的不同.如何安装?通过 py原创 2021-06-27 21:53:16 · 885 阅读 · 0 评论 -
Python 类中成员的坑(python类变量出错)
先看一下下面代码:class demo: l = []o1 = demo()o1.l.append ("Hello")o2 = demo()o2.l.append ("World!")print("list in o1: ", o1.l)print("list in o2: ", o2.l)你以为它会打印出什么?我们来看看实际情况:很显然,这不是我们想要的结果,那么如何解决呢?问题的原因去我的博客查看全文去我的博客查看全文去我的博客查.原创 2021-06-20 17:07:36 · 210 阅读 · 0 评论 -
Python 监听变量的方法(@property)
有时候我们可能需要监听一个类中成员的变化(例如判断它的修改是否合法或者做出相应行动).我们可以利用python的@property装饰器实现,直接看例子:class Student(object): @property def score(self): return self._score去我的博客查看全文去我的博客查看全文去我的博客查看全文...原创 2021-06-20 16:58:53 · 3703 阅读 · 0 评论 -
micropython最高效的字符串处理方式(优化执行速度)
在单片机中, 计算能力资源非常有限, 如何设计出更高执行效率的代码时嵌入式开发者的必修课程, 我通过统计和对比计算出了在micropython中最快的文本处理方法.实验流程:分别使用 string.join () , 文本加文本 , % 占位符 , string.format() 这四种方式 (micropython不支持f-string)来生成一段时间文本, 每一种方法执行五次, 每一次生成500次, 计算每种方法花费的时间.实验脚本:import time()print (.原创 2021-06-14 14:21:20 · 1010 阅读 · 2 评论 -
micropython中socket函数回调(非阻塞)(non-blocking)
我一直在寻找不让 socket 套接字阻塞 micropython 主进程的方法。通常的做法是启动一个socket套接字专属的线程来 accept 和 recv 因为有些开发版(例如esp8266)是不支持多线程的, 而且一直挂着个线程对于某些需要低功耗的场景来说显然是不明智的。于是我在 webrepl 的代码中找到了这个:listen_s.setsockopt(socket.SOL_SOCKET, 20, accept_handler)micropython/webrepl.py at.原创 2021-06-14 13:56:48 · 1183 阅读 · 0 评论 -
详解Python的装饰器, 看这一篇就全懂了!
1 - 简介当我们执行某一些函数的时候, 可能会在其之前或者之后执行一些操作, 下面是一个常见的例子:import timedef test (): n = 0 for i in range (10000): n += i return nt = time.time ()test ()spend = time.time() - tprint ("it took ", spend, "s")上面这个例子实现了一个计时器, 用来统计函数执.原创 2021-04-03 22:26:01 · 237 阅读 · 2 评论