Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 681d79a

Browse files
committed
keyword arguments and faster calls
1 parent 11a3f0c commit 681d79a

7 files changed

Lines changed: 771 additions & 594 deletions

File tree

Python/bltinmodule.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,20 @@ builtin_apply(self, args)
8080
object *self;
8181
object *args;
8282
{
83-
object *func, *alist;
83+
object *func, *alist, *kwdict = NULL;
8484

85-
if (!newgetargs(args, "OO:apply", &func, &alist))
85+
if (!newgetargs(args, "O|OO:apply", &func, &alist, &kwdict))
8686
return NULL;
87-
if (!is_tupleobject(alist)) {
87+
if (alist != NULL && !is_tupleobject(alist)) {
8888
err_setstr(TypeError, "apply() 2nd argument must be tuple");
8989
return NULL;
9090
}
91-
return call_object(func, alist);
91+
if (kwdict != NULL && !is_dictobject(kwdict)) {
92+
err_setstr(TypeError,
93+
"apply() 3rd argument must be dictionary");
94+
return NULL;
95+
}
96+
return PyEval_CallObjectWithKeywords(func, alist, kwdict);
9297
}
9398

9499
static object *
@@ -373,8 +378,7 @@ builtin_eval(self, args)
373378
return NULL;
374379
}
375380
if (is_codeobject(cmd))
376-
return eval_code((codeobject *) cmd, globals, locals,
377-
(object *)NULL, (object *)NULL);
381+
return eval_code((codeobject *) cmd, globals, locals);
378382
if (!is_stringobject(cmd)) {
379383
err_setstr(TypeError,
380384
"eval() argument 1 must be string or code object");

0 commit comments

Comments
 (0)