这是一个说隐蔽比较隐蔽,说弱智也比较弱智的坑。
造成这个坑的原因有两点:
如果习惯看源代码或者官方文档,要解决这个问题不超过 2 分钟。而如果不看文档不看源代码,只知道去网上搜搜搜,那么要解决这个问题可能需要的时间会超过两小时。
1
delectate 2018-08-28 08:22:19 +08:00
>>> import re
>>> print(int(re.S)) 16 学习了。 |
2
imn1 2018-08-28 08:32:15 +08:00 1
不读文档、手册怪谁呢?
自己跳过一个参数,这个哪个语言都不行吧?基础知识 flags 是整数,也是看手册就知道啊,默认参数 flags=0,不就明显是整数么? |
3
Leigg 2018-08-28 08:38:59 +08:00 via iPhone 1
。。。这个纯属于使用者粗心大意,我还以为是 re 库本身有问题呢,像这种 re.S/I/M,一般都是库内部使用 int 做的枚举值,类似的还有 pymongo.ASCENDING。
|
4
itskingname OP |
5
blodside 2018-08-28 09:24:45 +08:00 via Android
我一般用三个以上参数的时候都是指定参数名的
|
6
rrfeng 2018-08-28 09:27:50 +08:00 via Android
我只说一句,这就是 Python 蠢的地方了啊!
|
7
luyangk 2018-08-28 09:39:01 +08:00
在使用一个函数之前第一步不就是了解它的参数是什么吗。。。为什么这个步骤会放到了 debug 的时候。。。如果在知道函数有 5 个参数的情况下,只传了 4 个还没指定参数名,怎么想都会知道有问题吧
|
8
imn1 2018-08-28 09:41:16 +08:00 1
@itskingname
是你只看到我说的「表象」 我说的就是,你所强调的各点都是基础,连我这个不是程序员的人都懂的 尤其读手册是基础中的基础 使用任何函数、类、API 都该搞清楚输入格式和输出格式,怎能想当然呢 |
9
itskingname OP @imn1 唉,我觉得肯定是我这个例子没有举好
|
10
noqwerty 2018-08-28 09:50:48 +08:00 via Android
感觉这个不能怪库啊……传参数也要讲基本法吧
|
11
whileFalse 2018-08-28 10:14:54 +08:00
要怪罪到语言 /IDE 身上吗?
|
12
lxy42 2018-08-28 11:02:26 +08:00
@itskingname #4
> 多个默认参数不带参数名的时候,按顺序从左侧填写 “按顺序从左赋参”难道不是很符合直觉的做法吗? > 很多编程语言里面常量都会使用一个数字并赋值给一个大写变量来表示 用整数表示常量也是很普遍的做法啊。 你这个明显就是不熟悉函数用法导致的错误,跟库本身一点关系都没有。 |
14
itskingname OP @lxy42 我都说了 re.sub 只是我举得一个例子。。。
|