25 条回复  ·  342 次点击
ClericPy 小成 2024-10-10 21:17:39
老代码让我用 type-hints 给包了一层 interface 。。。

不敢动底层啊,上次动了,加班到晚上 9 点多!
est 小成 2024-10-10 21:34:29
数据拷贝任务你换啥语言来都是 dirty work
bhy 小成 2024-10-10 21:40:43
可以试试看 pytype 能不能 infer kwargs 的类型。看了一圈,mypy 和 pyright 应该还不支持。
miaotaizi 小成 2024-10-10 21:49:58
"屎中一坨",  别说什么 “人生苦短”, 不接受反驳
NoOneNoBody 小成 2024-10-10 21:57:13
params = ((1,2,3), (4,5,6,7), ...)
result = 0
for i,fun in enumerate((fun1, fun2, fun3, ...)): result=fun(result, *params)
print(result)

有些时候,上述 1,2,3 或 4,5,6,7 这些参数就是从上游得到的结果,只需按需顺列好传到下游计算,不需要理会其具体意义,这时候,args 就很有用了
例如上述代码写成闭包,只需传 params 和 result 初始值,就能完成一长串的计算,不需要记太多参数意义,可能更重要的点是 fun1/fun2/fun3...的顺序

数据预处理、标准化经常就是这样枯燥的,步骤和参数固定,机械化按顺序执行就是了
爬虫也是,无非就是 bs4+selector ,re+pattern ,lxml+xpath ,函数形式基本固定,变化只是 selector/pattern/xpath 这些,bs4/re/lxml 谁先谁后可能更重要

其实还有其他用法,如参数“补齐”
有十个参数,参数名都是固定的,有若干个 fun 都用这些同名参数,fun1 只用到 3 个,fun2 只用到 7 个……,可以全部十个都用 kwargs 传进去,传多了也不会错,不用逐个 fun 检查并选择哪些参数。例如处理图片,很多函数都是用相同的参数名,其意义也固定的,什么宽高、通道数……如果已知足够多参数,一起用 kwargs 传过去也不会错的,除非这个用 w/h 表示宽高,那个用 width/height 表示宽高,这就麻烦了
winterbells 小成 2024-10-10 22:04:07
更难受的是查找调用,结果弹出几十个无关路径,仅仅因为名字一样==
123
返回顶部