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");