所以我只是追踪我的Python程序中的一个奇怪的错误,这个错误是由于我将一个函数的参数混淆并错误地传递True给我time.sleep().Python似乎默默地转换True为1
该文件说:
暂停执行给定的秒数.参数可能是浮点数...
通常,当输入与预期的类型或范围不匹配时,Python很乐意抛出异常.为什么要sleep 静默转换True为数字?
在python中,Bool是一个子类int
>>> issubclass(bool, int)
True
Run Code Online (Sandbox Code Playgroud)
这是svn的源代码:http://svn.python.org/projects/python/trunk/Modules/timemodule.c
PyArg_ParseTuplefloat使用说明d:符将arg转换为a
static PyObject *
time_sleep(PyObject *self, PyObject *args)
{
double secs;
if (!PyArg_ParseTuple(args, "d:sleep", &secs))
return NULL;
if (floatsleep(secs) != 0)
return NULL;
Py_INCREF(Py_None);
return Py_None;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |