FIFO | 待学清单📝
- [x] RabbitMQ 官方文档
- [ ] Docker
- [x] 线程池、进程池
- [ ] 高并发框架
- [ ] 数据库索引
- [x] redis 布隆过滤器
- [ ] 设计模式 Design Patterns Book (opens new window)
- [x] 偏函数
当函数的参数个数太多,需要简化时,使用
functools.partial
可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
from functools import partial
def say_hello(name,title=''):
return f'Hello,{title},{name}'
def say_hello_to_doctor(name):
return partial(say_hello,title='docker')(name)
ret = say_hello_to_doctor('Peter')
print(ret)
2
3
4
5
6
7
8
9
10
11
12
- python - How does functools partial do what it does? - StackOverflow (opens new window)
- functional programming - Python: Why is functools.partial necessary? - StackOverflow (opens new window)
- [x] assert
断言应该用于:
- 防御性编程;
- 运行时检查程序逻辑;
- 核对合约(例如前置条件及后置条件) ;
- 程序不变量; 以及——
- 检查过的文件
不要在以下情况下使用断言:
- 永远不要用它们来测试用户提供的数据,或者在任何情况下都必须进行检查的任何事情。
- 不要使用 assert 来检查在正常使用程序时可能会失败的任何事情。断言是针对特殊故障情况的。您的用户永远不应该看到 AssertionError; 如果他们看到了,那么这就是一个需要修复的 bug。
- 特别地,不要仅仅因为 assert 比显式测试写的代码少就使用 assert。assert 不是懒惰程序员的快捷方式。
- 不要使用它们来检查公共库函数的输入参数(私有参数是可以的) ,因为您不能控制调用者,也不能保证它永远不会破坏函数的约定。
- 不要对您希望从中恢复的任何错误使用 assert。换句话说,您没有理由在生产代码中捕获 AssertionError 异常。
- 不要使用过多的断言,以免代码冗杂。
notes/when-to-use-assert.md at master · emre/notes (opens new window)
# 代码风格
Python 重构代码的一些模式 | Slient Plant (opens new window)
# debug
import sys
def get_cur_info():
print(sys._getframe().f_code.co_filename) # 当前文件名
print(sys._getframe(0).f_code.co_name) # 当前函数名
print(sys._getframe(1).f_code.co_name) # 调用该函数的函数的名字,如果没有被调用,则返回module
print(sys._getframe().f_lineno) # 当前行号
import sys, os
try:
raise NotImplementedError("No error")
except Exception as e:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type, fname, exc_tb.tb_lineno)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
获取异常行号参考自 (opens new window) Python 程序如何高效地调试? - 知乎 (opens new window) 打印日志 (log) 是比单步跟踪 (debugger) 更好的 Python 排错手段吗? - 知乎 (opens new window)
# 计算机书籍及知识体系
(不会真有人看完了吧?) NGTE Books (opens new window)
# WSGI
python wsgi 简介 | Cizixs Write Here (opens new window)
# Python 用法
multithreading - What is the use of join() in Python threading? - StackOverflow (opens new window)
# web 框架
Moving from Flask to FastAPI | TestDriven.io (opens new window)
FastAPI vs Flask | Is FastAPI Right Replacement for Flask? (opens new window)
Compare Flask vs Fast API | CodeAhoy (opens new window)
Choosing between Django, Flask, and FastAPI | Section (opens new window)
Flask vs FastAPI first impressions - DEV Community (opens new window)