duangsuse::Echo
#py 周刊 - 周刊1 无语了, #telegram 上写文怎么破事那么多呢? Ctrl+K 弹框又限bot干🐴呢,哇会做C++ UX真是太厉害了,Markdown编辑都搞不全 //替换/^\d*、//g; $0.innerHTML.replace(/<.?p.*?>/g,"") $$('p').forEach(e=> e.replaceWith(...e.childNodes)) $('[tabindex]:read-write').innerHTML=prompt() 只能在vs和web两个浏览器间,直接CtrlCV文档…
#py 周刊
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
Python 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
周刊1
#新品
Black 格式化工具+lint的替代者Ruff:快 30 倍以上 25w/.1s
你应该什么时候升级到 Python 3.12?建议你等到 12 月,修复不兼容的软件包、缺少二进制包
Python 3.12:一个被人忽略的史诗级版本 👍
改进 Numpy 的 Python API,为 2.0 版本准备
3.12 对于 Python 的意义,大于 3.5 的“async/await” 和 3.6 的 “Type Hint” 对于 Python 的意义!PEP-669 带来的可调试性(Cyberbrain call #visualize)、PEP-684 为 non-GIL 带来的性能提升、PEP-697 松耦合 C API
不要再用 requirements.txt 了, setup.py 的糟糕体验
推荐使用 Poetry。pip 的主要问题是没有 lockfile 和手工管理虚拟环境麻烦
在 Mac 上安装 Python 的正确方法作者给出的建议是 Pyenv + pyenv-virtualenv 。
uDjango:单文件的 Django 微型项目 这个项目是 DjangoCon US 2023 的演示项目,使用单文件不到 10 行代码,演示一个最小的 Django 应用。
Django vs Flask:哪个是最好的 Python Web 框架?一篇细致的长文,详细对比了它们在模板系统、URL 调度器、数据库支持、身份验证及授权、测试、软件架构、学习曲线等方面的差异。没有更好的,只有是否适合你的。
从零开始编写一个 Python 异步 ASGI Web 框架 这篇循序渐进的教程是很好的学习材料,让你了解 Web 框架设计、异步编程
kivy+pandas 开发简单的 Android 数据分析应用其作用是记录和显示你全天在屏幕上花费的时间
#框架
为什么 Django 后台管理系统那么“丑陋”?Django Admin UI 很多年没有变化,显得设计过时了。因为它不应该暴露给终端用户。
数据库生成的列 :Django & SQLiteGeneratedField 是正在开发的 Django 5.0 的新功能,实现C=A+B等自动SQL算式。这篇文章还介绍了一些 Django 5.0 中的新东西
Kenneth Reitz:迟来的道歉,以及 requests 3 的进展2019 年时 requests 3 的筹款闹出了不小的风波!文中列举了目前已经完成的一些事情(typehint,imports,async)
esmerald:高度可扩展、高性能的 Web 框架基于 Starlette 和 Pydantic ,支持同步和异步,提供 DAO、ORM、ODM、依赖注入、权限管理等功能。
grequests:异步的 HTTP 请求grequests 构建在 gevent 库之上,一个提升性能的建议。
#技巧 😨
100%的测试覆盖率是不够的:Python 中基于命题的测试 如何设置
@pytest.mark.parametrize
HypothesisPython 如何在日志中隐藏明文密码? 基于 logging 模块的两种实现方案:自定义 filter 和自定义 formatter
使用 AI 进行网页抓取实验(使用 GPT-4 解析 HTML)GPT4的能力到底如何呢?如抓取结构良好的网站、抓取 Google 自然搜索结果、抓取 Google SERP、以及抓取 Google MAPS 结果。
从混沌到凝聚:构建你自己的 Monorepo 文章介绍如何使用 GitHub Actions。monorepo 是将所有项目都放到一个代码仓管理,可能包含不同语言和框架。这意味着对它的依赖管理和 CI/CD 等都与普通代码仓不同。
RSS-GPT:使用 ChatGPT 为你的 RSS 订阅源生成摘要使用 GitHub workflow 新生成 RSS 订阅源且推送到 GitHub Pages。一键配置无需服务器。
#精通
Python 是一种编译型语言
我们通常习惯将 Python 称为一种解释型语言,因为它在运行时逐行。很多人还知道 .pyc 其实也有编译的过程。作者通过苏格拉底式对话和几轮实验,引导读者重新思考“解释”与“编译”:它们是错误的二分法、限制了编程的可能性
Python-Type-Challenges:通过在线挑战来学习 Python 类型提示
开发一个 Python 编译器和解释器这是一系列博文,目前已更新 6 篇,目标是探索和研究实现 Python 等编程语言所需的概念和算法,将会涉及:Lex-YaCC、树解释器。
你能用 Python 的 bisect 模块做到这些事两个函数,可以做很多事:二分搜索、前缀搜索、在列表中查找连续的相等值、查找字典中最接近的键、自定义对象的排序、按照字典 key 搜索。
使用 Ptpython 提高你的编码效率Ptpython 是一个功能丰富且对用户友好的 Python REPL,在脚本中嵌入。
de4py:Python 逆向工程工具包 (neta de4dot) 一款高级的 Python 反混淆器,面向恶意软件分析师和逆向工程师,它拥有精美的 UI 和一些高级功能。
#资源 🤗
public-apis:面向开发者的公共 API 列表 非常非常丰富的公共 API 清单,内容应有尽有。(star 2K)
XHS_Downloader: 小红书图文/视频 spider
FunASR:端到端语音识别工具包阿里。有语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等。(star 1.2K)
使用 Python+ChatGPT 开发一个书籍摘要 AI Langchain 和 OpenAI embedding 开发一个书籍摘要工具。另外,作者使用 Streamlit 发布了一个在线体验网站。
Telegram
Newlearnerの自留地
#Python潮流周刊 #Newsletter
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!
🦄文章&教程
1、Ruff:一款极其快、兼容 Black 的 Python 格式化工具
2、你应该什么时候升级到 Python 3.12?
3、Python 3.12:一个被人忽略的史诗级版本
4、不要再用 requirements.txt 了
5、为什么 Django 后台管理系统那么“丑陋”?
6、我迁移弃用 setup\.py 的糟糕体验
7、使用 Ptpython 提高你的编码效率…
duangsuse::Echo
#py #code #recommend 说到有趣的py接口,有个 iself() def read_as_io(f): class T(io.TextIOBase): read=lambda o,size: f(o) return T -匿名对象 之前写贪吃蛇 snk.c 就用到链表 不想缓冲区溢出的话Vec还是好的。C里你要实现[] 需要懂链表/strcat, rust 里你写 Vec<i32> push 就好了 Rust的生命周期现在基本不需要考虑(尤其是对应用开发时), type infer…
#py 周刊阅读笔记
https://t.me/NewlearnerChannel/12060
https://t.me/NewlearnerChannel/12097
https://www.kdnuggets.com/why-you-should-not-overuse-list-comprehensions-in-python
#code
# Parse&flatten the JSON string with deep"inner_key" into a Python dictionary
这个也不想,因为用match和递归更常见吧,elif isinstance 是什么py2地狱绘图
https://bernsteinbear.com//blog/simple-python-repl/#:~:text=readline%20API
https://www.skywind.me/blog/archives/2761
如何利用RegExp/创建REPL
出自 https://docs.python.org/3.11/library/re.html
#js #code 当输入 "3 hello 1world" 时展开缩写,并且补齐出现过的词
就用 <body ContentEditable>+CSS.hilights 示例吧?
https://jsbin.com/kamufijomu/edit?js,output 😅
参考^回复,这样就有分词和括号配对高亮了?
—续周刊
https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs
十多项 REST API 的最佳实践规则,解释了规则的含义及实现
作者嘲笑了几家公司被广泛使用的 API,将它们作为规则的反例。
[Django 5.0 发布了!](https://docs.djangoproject.com/en/5.0/releases/5.0)
新增`Field.db_default` 参数,可设置由数据库计算的日期等默认值;`GeneratedField` 可以创建由数据库计算的列,简化了表单字段相关元素的呈现
FastAPI 已经支持
[kolo VSCode 插件:查看 Django 应用的执行过程](https://github.com/kolofordjango/kolo)
具有帧可视化、漂亮的火焰图、显示执行了 SQL 查询的代码行
[autometrics-py:函数级的指标监测工具](https://github.com/autometrics-dev/autometrics-py)
只加一个装饰器,可检测函数的请求率、错误率和延迟,开箱即用仪表板、自定义告警、运行开销小
https://dev.to/taipy/new-open-source-vs-old-open-source-33k7
10 组在 Python 社区很知名的库的替代库,这里最没争议的估计是 Ruff 替代 Pylint,
其它则还有:Taipy/Streamlit、Polars/Pandas、Dask/PySpark、PyTorch/TensorFlow ……
[Python 借助 Gopy 库实现调用 Go.whl 包](https://last9.io/blog/using-golang-package-in-python-using-gopy/)
https://preslav.me/2023/11/27/python-is-easy-golang-is-simple-simple-is-not-easy/#:~:text=also%20at%20the-,core%20of%20Django,-%2C%20which%20speaks%20to
[对比 Python 与 Rust 的编程习惯用法](https://programming-idioms.org/cheatsheet/Python/Rust) 有意思的网站,可比较不同编程语言在 300 多项习惯用法上的区别
就像 https://component-party.dev/
https://kobzol.github.io/rust/python/2023/05/20/writing-python-like-its-rust.html
从 Rust 中学到的一些编程习惯:使用类型提示、使用数据类代替元组或字典、使用代数数据类型、使用“newtype”、使用构造函数、使用互斥锁等
[Python 工具箱系列文章](https://www.cnblogs.com/shanxihualu/p/17391082.html)
这是一个系列文章,目前包含 31 篇文章,最近介绍的几个工具是数据库相关的:Neo4j(一个 NoSQL 图数据库,使用 Py2neo 操作)、PostgreSQL
[trogon:为 CLI 程序生成友好的GUI](https://github.com/Textualize/trogon)
[当在终端输入“ls”后会发生什么?](https://www.warp.dev/blog/what-happens-when-you-open-a-terminal-and-enter-ls)(英文)
有一道很类似的常见的面试题:“当在浏览器输入 google.com 后会发生什么?”
[solara:一个纯 python、React-风格的ipywidget框架](https://github.com/widgetti/solara)
[用tkinter、PySimpleGUI 和 Jupyter Notebook 播放 GIF?](https://www.blog.pythonlibrary.org/2023/12/05/viewing-an-animated-gif-with-python/)
https://toga.readthedocs.io/en/stable/tutorial/tutorial-0.html#:~:text=()%0A%0A%20%20%20%20button%20%3D-,toga.Button,-(%22Hello%20world
Toga是跨平台的pyGUI
kanban-python:终端中的看板应用程序,和Vue TUI 一样
https://t.me/NewlearnerChannel/12060
https://t.me/NewlearnerChannel/12097
https://www.kdnuggets.com/why-you-should-not-overuse-list-comprehensions-in-python
#code
primes =lambda upper_limit: [x for x in range(2, upper_limit + 1) if x > 1 and all(x % i != 0 for i in range(2, int(math.sqrt(x)) + 1))]后面
primes(50)
#拆分后
is_prime=lambda num: num > 1 and all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1))
primes = [x
for x in range(2, 50 + 1)
if is_prime(x)
]
def flatten_matrix(matrix):求和排序的我不想写,因为明显可以用 yield和np.vectorize
def find_prime_indices(matrix, flattened_matrix):
# Parse&flatten the JSON string with deep"inner_key" into a Python dictionary
这个也不想,因为用match和递归更常见吧,elif isinstance 是什么py2地狱绘图
https://bernsteinbear.com//blog/simple-python-repl/#:~:text=readline%20API
https://www.skywind.me/blog/archives/2761
如何利用RegExp/创建REPL
出自 https://docs.python.org/3.11/library/re.html
#js #code 当输入 "3 hello 1world" 时展开缩写,并且补齐出现过的词
Lexer=kv=>{因为JS部分都这么长,还是懒得移植到PyExecJS了,总之分词器、括号配对啥的可以靠正则,提供补齐列表也不难
let re=Object.keys(kv).map(x=>`(${x})`).join('|'), mf=Object.values(kv),m,i,j=0
re=RegExp(re, 'gy')
return (s,ontok)=>{
for(m of re[Symbol.matchAll](s)) ontok(
mf[(j=m.findIndex((x,i)=>null!=x &&i!=0))-1](m[j]), (i=m.index), i+m[0].length
)
}
}
f=Lexer({
'\\d+':parseInt,
'[a-zA-Z]+':s=>s,
'\\s+'(){}
})
rep=(txt,on, n=null)=>f(txt,x=> (x==null)?on(' '):
(x.substr)? (on(x.repeat(n)),n=null) :
(n=x)
)
buildAry=(f,a=[])=>(f(x=>a.push(x)), a)
buildAry(rep.bind(0,"3hi 1end")).join('')
就用 <body ContentEditable>+CSS.hilights 示例吧?
https://jsbin.com/kamufijomu/edit?js,output 😅
参考^回复,这样就有分词和括号配对高亮了?
—续周刊
https://github.com/stickfigure/blog/wiki/How-to-(and-how-not-to)-design-REST-APIs
十多项 REST API 的最佳实践规则,解释了规则的含义及实现
作者嘲笑了几家公司被广泛使用的 API,将它们作为规则的反例。
[Django 5.0 发布了!](https://docs.djangoproject.com/en/5.0/releases/5.0)
新增`Field.db_default` 参数,可设置由数据库计算的日期等默认值;`GeneratedField` 可以创建由数据库计算的列,简化了表单字段相关元素的呈现
FastAPI 已经支持
python-dependency-injector
实现依赖注入的方法。[kolo VSCode 插件:查看 Django 应用的执行过程](https://github.com/kolofordjango/kolo)
具有帧可视化、漂亮的火焰图、显示执行了 SQL 查询的代码行
[autometrics-py:函数级的指标监测工具](https://github.com/autometrics-dev/autometrics-py)
只加一个装饰器,可检测函数的请求率、错误率和延迟,开箱即用仪表板、自定义告警、运行开销小
https://dev.to/taipy/new-open-source-vs-old-open-source-33k7
10 组在 Python 社区很知名的库的替代库,这里最没争议的估计是 Ruff 替代 Pylint,
其它则还有:Taipy/Streamlit、Polars/Pandas、Dask/PySpark、PyTorch/TensorFlow ……
[Python 借助 Gopy 库实现调用 Go.whl 包](https://last9.io/blog/using-golang-package-in-python-using-gopy/)
https://preslav.me/2023/11/27/python-is-easy-golang-is-simple-simple-is-not-easy/#:~:text=also%20at%20the-,core%20of%20Django,-%2C%20which%20speaks%20to
[对比 Python 与 Rust 的编程习惯用法](https://programming-idioms.org/cheatsheet/Python/Rust) 有意思的网站,可比较不同编程语言在 300 多项习惯用法上的区别
就像 https://component-party.dev/
https://kobzol.github.io/rust/python/2023/05/20/writing-python-like-its-rust.html
从 Rust 中学到的一些编程习惯:使用类型提示、使用数据类代替元组或字典、使用代数数据类型、使用“newtype”、使用构造函数、使用互斥锁等
[Python 工具箱系列文章](https://www.cnblogs.com/shanxihualu/p/17391082.html)
这是一个系列文章,目前包含 31 篇文章,最近介绍的几个工具是数据库相关的:Neo4j(一个 NoSQL 图数据库,使用 Py2neo 操作)、PostgreSQL
[trogon:为 CLI 程序生成友好的GUI](https://github.com/Textualize/trogon)
[当在终端输入“ls”后会发生什么?](https://www.warp.dev/blog/what-happens-when-you-open-a-terminal-and-enter-ls)(英文)
有一道很类似的常见的面试题:“当在浏览器输入 google.com 后会发生什么?”
[solara:一个纯 python、React-风格的ipywidget框架](https://github.com/widgetti/solara)
[用tkinter、PySimpleGUI 和 Jupyter Notebook 播放 GIF?](https://www.blog.pythonlibrary.org/2023/12/05/viewing-an-animated-gif-with-python/)
https://toga.readthedocs.io/en/stable/tutorial/tutorial-0.html#:~:text=()%0A%0A%20%20%20%20button%20%3D-,toga.Button,-(%22Hello%20world
Toga是跨平台的pyGUI
kanban-python:终端中的看板应用程序,和Vue TUI 一样
Telegram
Newlearnerの自留地
#Python潮流周刊
Python 潮流周刊#27:应该如何处理程序的错误?
🦄文章&教程
1、将 Python 错误作为值:比较 Go 和 Rust 的使用模式
2、调试 Django 中的 CSRF 失败/403 禁止错误
3、对 Python 环境和包管理工具的公正分析
4、让我们一起创建一个 Python 调试器
5、揭开 Python 3.12 的面纱:Python 世界有哪些新东西?
6、Python 的哈希表指南
7、运行不可信的 Python 代码
8、了解 Linux cp 命令并用…
Python 潮流周刊#27:应该如何处理程序的错误?
🦄文章&教程
1、将 Python 错误作为值:比较 Go 和 Rust 的使用模式
2、调试 Django 中的 CSRF 失败/403 禁止错误
3、对 Python 环境和包管理工具的公正分析
4、让我们一起创建一个 Python 调试器
5、揭开 Python 3.12 的面纱:Python 世界有哪些新东西?
6、Python 的哈希表指南
7、运行不可信的 Python 代码
8、了解 Linux cp 命令并用…
duangsuse::Echo
#py 周刊阅读笔记 https://t.me/NewlearnerChannel/12060 https://t.me/NewlearnerChannel/12097 https://www.kdnuggets.com/why-you-should-not-overuse-list-comprehensions-in-python #code primes =lambda upper_limit: [x for x in range(2, upper_limit + 1) if x > 1 and…
#py 周刊
[DSAlgo:数据结构和算法的面试题集锦](https://github.com/SamirPaulb/DSAlgo)
大公司的面试题与计算机类学习笔记等资料。(star 1.7K)
[“SQLite 源码有 15 多万行,但测试代码和脚本竟有九千多万行”](https://www.bmpi.dev/dev/renaissance-sqlite)
[如何系统地自学Python?](https://www.zhihu.com/question/29138020)
知乎上的一个热门问题,已有 7.4 万人关注和 1200+ 回答。
[你用 Python 做过最酷的事情是什么?](https://www.reddit.com/r/Python/comments/17upt2f/whats_the_coolest_things_youve_done_with_python/)
Reddit 上的热门讨论帖,也有近 700 条评论,需要刷很久才能看完。。。
[Python 多线程编程的终极指南](https://programmingeeksclub.com/ultimate-python-multithreading-guide) (英文)
[鹅厂程序员的 9 个生存法则](https://segmentfault.com/a/1190000043833549)
https://lucumr.pocoo.org/2023/12/1/the-python-that-was/
https://yorickpeterse.com/articles/a-decade-of-developing-a-programming-language/
“所有反对动态语言、不让弱化类型签名的论点存在很久了!今天他们也没有任何新的发明,也没有任何进步的改变。 但我们集体说:管它呢。 发挥自己的优势吧
曾经有这样一个世界,系统固有的复杂性,大得绝对需要 IDE、代码生成和编译时工具。相比之下,我的世界里有 Vim 以及一个基本的 Linux 盒子
我们,不应该再那么信任开发人员,并重新引入与软件语意对抗的复杂性。现代 Python 对于JavaEE人来说是不可能理解的。
(按:点名批评langchain 太不Pythonic 。今天强类型还是有进步的,Go的类型推导和ts的渐强类型 比Java好多了)
https://tonybaloney.github.io/posts/sub-interpreter-web-workers.html
- (可爱封面图) 用子解释器运行 Python 并行程序,比multiprocessing(fork)快100倍
PEP: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-pattern.html
模式匹配语法是 3.10 版本的重大特性,但是 Sullivan 认为它的能力相当有限,因此提出了模式匹配的后续发展方向
[允许在 for 循环的循环头中使用推导式语法](https://discuss.python.org/t/allow-comprehension-syntax-in-loop-header-of-for-loop/25864)(英文)
这个帖子提出了一个想法:让 Python 的 for 循环支持推导式语法“for i in x if i % 2 == 0:”。
[解密 CPython:当执行 a+b 时,int与float如何被区分?](https://codeconfessions.substack.com/p/cpython-dynamic-dispatch-internals)
[深入理解 Python 虚拟机:描述器实现原理与源码分析](https://github.com/Chang-LeHung/dive-into-cpython/blob/master/obsy/03decriptor.md)
动态分发(Dynamic Dispatch)指的是在程序运行时(而不是在编译时)确定调用哪个方法或函数的过程。
彩蛋:
[Python 装饰器:用包装巫术增强你的代码](https://hackthedeveloper.com/python-decorator/)
[Python 元类教程(带示例)](https://coderslegacy.com/python-metaclass-tutorial/)(英文)
[DSAlgo:数据结构和算法的面试题集锦](https://github.com/SamirPaulb/DSAlgo)
大公司的面试题与计算机类学习笔记等资料。(star 1.7K)
[“SQLite 源码有 15 多万行,但测试代码和脚本竟有九千多万行”](https://www.bmpi.dev/dev/renaissance-sqlite)
[如何系统地自学Python?](https://www.zhihu.com/question/29138020)
知乎上的一个热门问题,已有 7.4 万人关注和 1200+ 回答。
[你用 Python 做过最酷的事情是什么?](https://www.reddit.com/r/Python/comments/17upt2f/whats_the_coolest_things_youve_done_with_python/)
Reddit 上的热门讨论帖,也有近 700 条评论,需要刷很久才能看完。。。
[Python 多线程编程的终极指南](https://programmingeeksclub.com/ultimate-python-multithreading-guide) (英文)
[鹅厂程序员的 9 个生存法则](https://segmentfault.com/a/1190000043833549)
https://lucumr.pocoo.org/2023/12/1/the-python-that-was/
https://yorickpeterse.com/articles/a-decade-of-developing-a-programming-language/
“所有反对动态语言、不让弱化类型签名的论点存在很久了!今天他们也没有任何新的发明,也没有任何进步的改变。 但我们集体说:管它呢。 发挥自己的优势吧
曾经有这样一个世界,系统固有的复杂性,大得绝对需要 IDE、代码生成和编译时工具。相比之下,我的世界里有 Vim 以及一个基本的 Linux 盒子
我们,不应该再那么信任开发人员,并重新引入与软件语意对抗的复杂性。现代 Python 对于JavaEE人来说是不可能理解的。
(按:点名批评langchain 太不Pythonic 。今天强类型还是有进步的,Go的类型推导和ts的渐强类型 比Java好多了)
https://tonybaloney.github.io/posts/sub-interpreter-web-workers.html
- (可爱封面图) 用子解释器运行 Python 并行程序,比multiprocessing(fork)快100倍
PEP: https://pyfound.blogspot.com/2023/05/the-python-language-summit-2023-pattern.html
模式匹配语法是 3.10 版本的重大特性,但是 Sullivan 认为它的能力相当有限,因此提出了模式匹配的后续发展方向
[允许在 for 循环的循环头中使用推导式语法](https://discuss.python.org/t/allow-comprehension-syntax-in-loop-header-of-for-loop/25864)(英文)
这个帖子提出了一个想法:让 Python 的 for 循环支持推导式语法“for i in x if i % 2 == 0:”。
[解密 CPython:当执行 a+b 时,int与float如何被区分?](https://codeconfessions.substack.com/p/cpython-dynamic-dispatch-internals)
[深入理解 Python 虚拟机:描述器实现原理与源码分析](https://github.com/Chang-LeHung/dive-into-cpython/blob/master/obsy/03decriptor.md)
动态分发(Dynamic Dispatch)指的是在程序运行时(而不是在编译时)确定调用哪个方法或函数的过程。
彩蛋:
import this,antigravity[Python修饰器的函数式编程](http://coolshell.cn/articles/11265.html):左耳朵耗子唯一以 Python 为话题的文章,而且写得详细到位。
import keyword,strings
>>> keyword.softkwlist #'match' in it
[Python 装饰器:用包装巫术增强你的代码](https://hackthedeveloper.com/python-decorator/)
[Python 元类教程(带示例)](https://coderslegacy.com/python-metaclass-tutorial/)(英文)
GitHub
GitHub - SamirPaulb/DSAlgo: 📚A repository that contains all the Data Structures and Algorithms concepts and solutions to various…
📚A repository that contains all the Data Structures and Algorithms concepts and solutions to various problems in Python3 stored in a structured manner.👨💻🎯 - SamirPaulb/DSAlgo
duangsuse::Echo
[人工智能 AI 孙燕姿模型应用实践](https://v3u.cn/a_id_310) 最近 AI 孙燕姿太火了!文章基于 Python3.10 和开源库 so-vits-svc(高表现力的语音合成模型)、Spleeter(人声和伴奏分离) [clone-voice: 一个带 web 界面的声线转换工具](https://github.com/jianchang512/clone-voice) 支持中文、英文、日语、韩语 4 种语言,也支持文字转语音(star 1.3K) [八十行代码实现开源的 Midjourney、Stable…
#py 周刊
https://coderslegacy.com/python-init-py-best-practices/
PEP: 在PyVM实现Null可空链 ?? ?. ?[]
这个修改非常复杂,但因为py不支持内联lambda ?.run{} ?: 什么的,恐怕没啥意义
btw. []"" 0 None or 已被用于null替换
https://augierpi.gricad-pages.univ-grenoble-alpes.fr/mojo-the-point-of-view-of-a-researcher-using-python.html#tiobe
mojo: 正在进步的py科学计算超集
msgspec: 支持BSON,toml,yml ; 比 pydantic 快10x
#ai #tool https://github.com/Coframe/coffee?tab=readme-ov-file#related
继 v0.dev , 外包围 <Coffee> 标签Ctrl+S就能让AI修改试运行, 完成后 < pour="" > 即合并代码
https://coderslegacy.com/python-init-py-best-practices/
from a import *https://nedbatchelder.com/blog/202312/realworld_matchcase.html
# 代表了 a.py
import a.b as b
# 代表 a/b.py
# 但是,你可以利用b.py imports 和 __all__=[] 对导出进行平铺化
PEP: 在PyVM实现Null可空链 ?? ?. ?[]
这个修改非常复杂,但因为py不支持内联lambda ?.run{} ?: 什么的,恐怕没啥意义
btw. []"" 0 None or 已被用于null替换
https://augierpi.gricad-pages.univ-grenoble-alpes.fr/mojo-the-point-of-view-of-a-researcher-using-python.html#tiobe
mojo: 正在进步的py科学计算超集
msgspec: 支持BSON,toml,yml ; 比 pydantic 快10x
import msgspecpydantic/FastUI : ASP# table再现
msgspec.json.encode(User("alice", groups={"admin", "engineering"}))
class User(msgspec.Struct):
"""A new type describing a User"""
name: str
groups: set[str] = set()
email: str | None = None
#ai #tool https://github.com/Coframe/coffee?tab=readme-ov-file#related
继 v0.dev , 外包围 <Coffee> 标签Ctrl+S就能让AI修改试运行, 完成后 < pour="" > 即合并代码
Telegram
Newlearnerの自留地
#Python潮流周刊
🐬🐬第 31 期
🦄文章&教程
- PEP-738:将 Android 添加为第 3 层支持的平台
- 深度解析 Marker:AI 驱动的 PDF 布局检测引擎的源码解读
- 现实世界的 match/case
- pytest 守护进程:提升 10 倍本地测试迭代速度
- 使用 Python 88 行代码写一个简易的 Android AI 程序
- 在 Python 中不需要这些无谓的操作
- 为什么要用“if TYPECHECKING”?
- 对比 SQLALchemy…
🐬🐬第 31 期
🦄文章&教程
- PEP-738:将 Android 添加为第 3 层支持的平台
- 深度解析 Marker:AI 驱动的 PDF 布局检测引擎的源码解读
- 现实世界的 match/case
- pytest 守护进程:提升 10 倍本地测试迭代速度
- 使用 Python 88 行代码写一个简易的 Android AI 程序
- 在 Python 中不需要这些无谓的操作
- 为什么要用“if TYPECHECKING”?
- 对比 SQLALchemy…
#py #tool 浏览器缓存 图片 爬虫
#code
你可以逐文件夹拼图: #bash 各种相对路径真的吐了
python a.py 'x\.com' 200 ~/.cache/chromium/Default/Cache/Cache_Data/*
python imgdump.py 'www' 100 `ls --sort time --reverse ~/.cache/chromium/Default/Cache/Cache_Data/*`
#code
import re,struct, os
def ls_cache(urlRegex, kbSizeMin, *cache_files):
key_marker = struct.pack('Q', 0xf4fa6f45970d41d8)
def deco(b):
# header is 8+4+4:keylen+4+ bytes[keylen]
key_len = struct.unpack('I', b[12:16])[0]+4
key = b[20:20+key_len].decode()
body = b[20+key_len:b.find(key_marker)]
if len(body)>kbSizeMin*1024 and re.search(urlRegex,key):
return mstrip(100,re.sub('[\x00/]','', key)),body
mapFiles(cache_files,deco)
mstrip=lambda n,s: s if len(s)<n else f"{s[:n//2-2 -2]}..{s[n//2:]}"
def mapFiles(a, fOut):
os.system('rm -rf png;mkdir png')
for i,file in enumerate(a):
with open(file, 'rb') as f:
if f1:=fOut(f.read()):
k,v=f1
with open(f'png/{i}-{k}', 'wb+') as out_f:out_f.write(v)
if __name__ == '__main__':
import fire
fire.Fire(ls_cache)
你可以逐文件夹拼图: #bash 各种相对路径真的吐了
vcat() { cd $1;a=`find *|sort -n|xargs printf "-i %s\n"`最开始考虑了 https://t.me/dsuses/5305 和binwalk但太慢
ffmpeg $a -filter_complex vstack=inputs=`wc -l <<<$a` ../$1.png ;cd -;}
for f in `ls`;do vcat $f;done
for f in find * -type d; do thunar -B $f/*; done #按文件夹 批量重命名
cp-id() { i=1; for x in "$@"; do X=$(basename "$x"); cp "$x" "${i}-${X%.*}.${X##*.}"; i=$((i+1)); done; }
mkdir a tar
cp `grep 'x.com' -FRl ~/.cache/chromium/Default/Cache/|find -size +200k` tar
binwalk -C a -D image:png tar/*
find a/ -name '*.png'|nl
Telegram
duangsues.is_a? SaltedFish
To retrieve the N most recent images from the Chrome cache in Linux that are greater than 100KB in size using Python, you can use the following script. This script uses the sqlite3 library to access Chrome's cache database. Please note that accessing the…
#plt #code 谈到RPN,我昨天有个灵感想把js做成缩进的形式
就回顾了优先级算法(嵌套深度包括h1~h6树本质上也是优先级)
示例算法
https://t.me/dsuse/19097 圆括号解析, CSS代码高亮
https://t.me/dsuse/19320 各种正则替代lex,trie 的妙用
https://t.me/dsuse/17410 带步骤 四则计算器
https://t.me/dsuse/19387 类型推导科普, 动态和词法域,SQL的方言, 转译器 sourcemap
https://t.me/dsuse/18139 bing挑战各种算法和BNF
我还想了个有意思的鬼畜kt翻译,只用 忆一事悟疑实 6个字:
可惜kt没支持 for(..a) 和 a.forEach{} 平权
不然还能更好玩
📝 明天写出来会贴gist
就回顾了优先级算法(嵌套深度包括h1~h6树本质上也是优先级)
示例算法
sexp(tok('1 (2 3) 4')), exp(tok('1*2+3'), optab)
optab={[';']:-1}
"=;+ -;* /".split(';').map((a,l)=>a.split(' ').forEach(x=> optab[x]=l ))
exp=(s/*token x单项o算符 x..*/, l/*evels 大则深,紧 */)=>{
let o,x=()=>add(Number(s())), ord=[],add=x=>ord.push(x),
at=O=>{let A,B; x()
for(o=s();(A=l[o])>=(B=l[O]);)if(A!=B)at(o);else{add(O);x(); O=o;o=s()} add(O)
}
at(";");return ord
}
sexp=s=>{let a=[],x;for(;(x=s())&&x!=')';)a.push(x=='('?sexp(s):x); return a}
//^ 一般需配对。此省行数
sexp=(s, a=[], f=()=>{let x,i=0;for(;(x=s())&&x!=')';i++) {x=='('?f():a.push(x)} a.push(i) })=>(f(),a)
//'(a (b c) d)' 换RPN [a b c 2 d 3], 可显示步骤
tok=(cod, s=cod.split(/\s+|([()]|\W+)/).filter(x=>!!x).values())=>
()=>s.next().value
https://t.me/dsuse/19097 圆括号解析, CSS代码高亮
https://t.me/dsuse/19320 各种正则替代lex,trie 的妙用
https://t.me/dsuse/17410 带步骤 四则计算器
https://t.me/dsuse/19387 类型推导科普, 动态和词法域,SQL的方言, 转译器 sourcemap
https://t.me/dsuse/18139 bing挑战各种算法和BNF
我还想了个有意思的鬼畜kt翻译,只用 忆一事悟疑实 6个字:
忆一 忆 Pair(一 x:数, 一 y:数)
忆 Main(一 a:行<Pair>): Events {
悟 事 onInit() {
一实((x,y) 于 a) 疑{ x==Z -> 不输别玩 }
}
说的 废物 一 Z=0 //inline private
}
忆悟 Events {
道理 事 onInit()
}
可惜kt没支持 for(..a) 和 a.forEach{} 平权
不然还能更好玩
📝 明天写出来会贴gist
Telegram
duangsuse::Echo
#py #code #recommend 说到有趣的py接口,有个 iself()
def read_as_io(f):
class T(io.TextIOBase):
read=lambda o,size: f(o)
return T
-匿名对象
之前写贪吃蛇 snk.c 就用到链表
不想缓冲区溢出的话Vec还是好的。C里你要实现[] 需要懂链表/strcat, rust 里你写 Vec<i32> push 就好了
Rust的生命周期现在基本不需要考虑(尤其是对应用开发时), type…
def read_as_io(f):
class T(io.TextIOBase):
read=lambda o,size: f(o)
return T
-匿名对象
之前写贪吃蛇 snk.c 就用到链表
不想缓冲区溢出的话Vec还是好的。C里你要实现[] 需要懂链表/strcat, rust 里你写 Vec<i32> push 就好了
Rust的生命周期现在基本不需要考虑(尤其是对应用开发时), type…
#py #signal https://t.me/dsuse/17587
计步的实现核心就是状态机,我当年一顿花式踩钉耙,因为自己是脑科学背景的,很直觉的就想到了各种滤波器,时频变换方法,结果 JS 的信号处理生态一坨屎,碰得满脸血。
结果 GPT 告诉我你只需要一个非常简单、几行就能做出来的滤波器,以及一个状态机就能把事情做完了。
这时的我:蛤……????
可以参照源码:
https://github.com/Losses/aliceRun/blob/master/src/utils/StepCounter.ts
感谢现代技术给我重新做人的机会(鞠躬)
def exponential_smoothing(result,data, alpha):
result[:] = [data[0]] # 初始值即为第一个数据点
for t in range(1, len(data)):
result.append(alpha * data[t] + (1 - alpha) * result[t - 1])
def moving_average(data, window_size):
for i in range(len(data) - window_size + 1):
window = data[i:i + window_size]
yield sum(window) / window_size
计步的实现核心就是状态机,我当年一顿花式踩钉耙,因为自己是脑科学背景的,很直觉的就想到了各种滤波器,时频变换方法,结果 JS 的信号处理生态一坨屎,碰得满脸血。
结果 GPT 告诉我你只需要一个非常简单、几行就能做出来的滤波器,以及一个状态机就能把事情做完了。
这时的我:蛤……????
可以参照源码:
https://github.com/Losses/aliceRun/blob/master/src/utils/StepCounter.ts
感谢现代技术给我重新做人的机会(鞠躬)
GitHub
aliceRun/src/utils/StepCounter.ts at master · Losses/aliceRun
Experimental media project. Contribute to Losses/aliceRun development by creating an account on GitHub.
duangsuse::Echo
— CLI程序服务 getopts; complete 用于获取短参数和提供补齐。少数人用while shift/read;case 来解析 还有一个select in ; do,和py2 print 是异曲同工之败笔,请 ->展示zenity的所有功能,并生成一个简短的MC风格的文字冒险 #!/bin/bash while getopts ":n:s:err" opt; do #?未知 :空 case $opt in n) n=$OPTARG ;; s) s=$OPTARG ;;…
#py #code snake 贪吃蛇,最近很忙放着待改
import termios as TTY,copy, sys,time, numpy as np
from contextlib import contextmanager
from dataclasses import dataclass as d
@d
class tty:
fd:int
@property
def Is(_):return TTY.tcgetattr(_.fd)
@Is.setter
def Is(_,v):TTY.tcsetattr(_.fd, TTY.TCSADRAIN, v)
@contextmanager
def swap(x,r, f):
v=r.fget(x)
try: r.fset(x,f(v1:=copy.deepcopy(v))or v1);yield
finally: r.fset(x,v)
sdf=lambda w,h,f:np.fromfunction(lambda x,y:f(x-.5*w,y-.5*h), (w,h))
sdQuad=lambda r:lambda x,y:abs(x+y)+abs(x-y)-r
def snake(a=sdf(15,15, sdQuad(10)), fps=2):
a=np.vectorize(lambda P: 1 if P>2 else 0)(a)
n,m=a.shape; P=0;dP=1
kbd={'a':-1,'d':+1,'w':-m,'s':+m,}
def ADWS(a):a[3]=a[3] &~ TTY.ICANON|TTY.ECHO; a[-1][TTY.VMIN]=0
def f5():
nonlocal P
P+=dP;a[P//m,P%m]=0
print(a)
with swap(tty(0), tty.Is,ADWS):
while True:
k=sys.stdin.read(1); dP=kbd.get(k)or dP
print(f'\x1b[{n}A',end=''); f5(); time.sleep(1/fps)
snake()
#py #js #bin
不过你的下一个项目可以用 fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 这样的读取模式
能read,能解码,但是不能编码,听起来有点奇怪。 printf/scanf 都不是这样的
你明明知道一个struct的结构,能够免费实现load(),却无法修改保存你读到的东西,这不奇怪吗?
好吧,对工程界这是基本操作。Reader/Writer嘛
因为一般,人们只是把bin搞成JSON,而不会反过来,二进制都是旧程序员输出的东西了
struct datefld {unsigned short day : 5, month : 4, year : 14; };
https://en.cppreference.com/w/cpp/language/bit_field
那有没有可能按buffer读,但是对unaligned read,换bitfield(64)?
这样手写let x=readU8() ret{x} 的样板代码也会减少
py就有一个 cStruct
format = Struct(
"signature" / Const(b"BMP"),
"width" / Int8ub,
"height" / Int8ub,
"pixels" / Array(this.width * this.height, Byte),
)
https://construct.readthedocs.io/en/latest/intro.html#example
d = Bitwise(Struct(
Padding(2),
"x" / Flag,
Padding(5),
))
d.build(dict(x=5))
b' '
https://construct.readthedocs.io/en/latest/bitwise.html#bitstruct
ffmpeg那样开源又sota的系统工具太少了
我觉得jspy这些的API没做错,py这封装不是很完备么?只是习惯于类比文本和二进制的dev太少了,都是被迫在写
Hz写过ASN.1吗听说很快 还支持惰性XML
这玩意的stdint好像还是msdos的命名风格,真的直接按byte数定义binfmt不好么
其实穷人用 https://apps.kde.org/zh-cn/okteta/ 也行
还是Qt那帮人聪明,堪比ms
不过你的下一个项目可以用 fitUint(nBit, obj,key){if o[k]undef or isF5:read else write} 这样的读取模式
能read,能解码,但是不能编码,听起来有点奇怪。 printf/scanf 都不是这样的
你明明知道一个struct的结构,能够免费实现load(),却无法修改保存你读到的东西,这不奇怪吗?
好吧,对工程界这是基本操作。Reader/Writer嘛
因为一般,人们只是把bin搞成JSON,而不会反过来,二进制都是旧程序员输出的东西了
struct datefld {unsigned short day : 5, month : 4, year : 14; };
https://en.cppreference.com/w/cpp/language/bit_field
那有没有可能按buffer读,但是对unaligned read,换bitfield(64)?
这样手写let x=readU8() ret{x} 的样板代码也会减少
py就有一个 cStruct
format = Struct(
"signature" / Const(b"BMP"),
"width" / Int8ub,
"height" / Int8ub,
"pixels" / Array(this.width * this.height, Byte),
)
https://construct.readthedocs.io/en/latest/intro.html#example
d = Bitwise(Struct(
Padding(2),
"x" / Flag,
Padding(5),
))
d.build(dict(x=5))
b' '
https://construct.readthedocs.io/en/latest/bitwise.html#bitstruct
ffmpeg那样开源又sota的系统工具太少了
我觉得jspy这些的API没做错,py这封装不是很完备么?只是习惯于类比文本和二进制的dev太少了,都是被迫在写
Hz写过ASN.1吗听说很快 还支持惰性XML
这玩意的stdint好像还是msdos的命名风格,真的直接按byte数定义binfmt不好么
其实穷人用 https://apps.kde.org/zh-cn/okteta/ 也行
还是Qt那帮人聪明,堪比ms
KDE 应用程序
Okteta
十六进制编辑器
duangsuse::Echo
Photo
http://www.bilibili.com/video/BV1W6421Z7ES #py def data class 这个点子有PoC了 ☺️ #recommend
def Point(x,y):
def len(k):x*y*k
[置顶]简介:
github仓库地址:https://github.com/MintLF/MBPC 原视频:
@__阿岳__ python迷惑行为:用闭包函数来写class
最近电脑不在身边,只好一直记设计笔记,还是能看到自己没机会试(测试AI玩了玩)的点子
def Point(x,y):
def len(k):x*y*k
[置顶]简介:
github仓库地址:https://github.com/MintLF/MBPC 原视频:
@__阿岳__ python迷惑行为:用闭包函数来写class
最近电脑不在身边,只好一直记设计笔记,还是能看到自己没机会试(测试AI玩了玩)的点子
Bilibili
MBPC - 更好的Python类_哔哩哔哩_bilibili
github仓库地址:https://github.com/MintLF/MBPC原视频:@__阿岳__ BV1dz421B7aQ, 视频播放量 6638、弹幕量 4、点赞数 122、投硬币枚数 20、收藏人数 175、转发人数 13, 视频作者 minDELTAt, 作者简介 热爱古典音乐的初三生,相关视频:Python 泛型 Generic 做啥的?,Python 泛型协变covariant, 逆变contravariant做啥的?,Python的12个冷门语法,python中这样用lambda ?,FastAPI…