Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 2844:0261bf5b3819 legacy-trunk
keyword arguments and faster calls
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 18 Jul 1995 14:51:37 +0000 |
| parents | 65c7105868f8 |
| children | eebbdbee54f9 |
line wrap: on
line diff
--- a/Python/bltinmodule.c Tue Jul 18 14:40:09 1995 +0000 +++ b/Python/bltinmodule.c Tue Jul 18 14:51:37 1995 +0000 @@ -80,15 +80,20 @@ object *self; object *args; { - object *func, *alist; + object *func, *alist, *kwdict = NULL; - if (!newgetargs(args, "OO:apply", &func, &alist)) + if (!newgetargs(args, "O|OO:apply", &func, &alist, &kwdict)) return NULL; - if (!is_tupleobject(alist)) { + if (alist != NULL && !is_tupleobject(alist)) { err_setstr(TypeError, "apply() 2nd argument must be tuple"); return NULL; } - return call_object(func, alist); + if (kwdict != NULL && !is_dictobject(kwdict)) { + err_setstr(TypeError, + "apply() 3rd argument must be dictionary"); + return NULL; + } + return PyEval_CallObjectWithKeywords(func, alist, kwdict); } static object * @@ -373,8 +378,7 @@ return NULL; } if (is_codeobject(cmd)) - return eval_code((codeobject *) cmd, globals, locals, - (object *)NULL, (object *)NULL); + return eval_code((codeobject *) cmd, globals, locals); if (!is_stringobject(cmd)) { err_setstr(TypeError, "eval() argument 1 must be string or code object");
