@@ -1413,6 +1413,60 @@ equivalent to (x**y) % z, but may be more efficient (e.g. for longs).");
1413
1413
1414
1414
1415
1415
1416
+ static PyObject *
1417
+ builtin_print (PyObject * self , PyObject * args , PyObject * kwds )
1418
+ {
1419
+ static char * kwlist [] = {"sep" , "end" , "file" , 0 };
1420
+ PyObject * dummy_args = PyTuple_New (0 );
1421
+ PyObject * sep = NULL , * end = NULL , * file = NULL ;
1422
+ int i , err ;
1423
+
1424
+ if (dummy_args == NULL )
1425
+ return NULL ;
1426
+ if (!PyArg_ParseTupleAndKeywords (dummy_args , kwds , "|OOO:Print" ,
1427
+ kwlist , & sep , & end , & file ))
1428
+ return NULL ;
1429
+ if (file == NULL || file == Py_None )
1430
+ file = PySys_GetObject ("stdout" );
1431
+
1432
+ /* XXX Verify that sep and end are None, NULL or strings. */
1433
+
1434
+ for (i = 0 ; i < PyTuple_Size (args ); i ++ ) {
1435
+ if (i > 0 ) {
1436
+ if (sep == NULL || sep == Py_None )
1437
+ err = PyFile_WriteString (" " , file );
1438
+ else
1439
+ err = PyFile_WriteObject (sep , file ,
1440
+ Py_PRINT_RAW );
1441
+ if (err )
1442
+ return NULL ;
1443
+ }
1444
+ err = PyFile_WriteObject (PyTuple_GetItem (args , i ), file ,
1445
+ Py_PRINT_RAW );
1446
+ if (err )
1447
+ return NULL ;
1448
+ }
1449
+
1450
+ if (end == NULL || end == Py_None )
1451
+ err = PyFile_WriteString ("\n" , file );
1452
+ else
1453
+ err = PyFile_WriteObject (end , file , Py_PRINT_RAW );
1454
+ if (err )
1455
+ return NULL ;
1456
+
1457
+ Py_RETURN_NONE ;
1458
+ }
1459
+
1460
+ PyDoc_STRVAR (print_doc ,
1461
+ "Print(value, ..., file=None, sep=' ', end='\\n')\n\
1462
+ \n\
1463
+ Prints the values to a stream, or to sys.stdout by default.\n\
1464
+ Optional keyword arguments:\n\
1465
+ file: a file-like object (stream); defaults to the current sys.stdout.\n\
1466
+ sep: string inserted between values, default a space.\n\
1467
+ end: string appended after the last value, default a newline." );
1468
+
1469
+
1416
1470
/* Return number of items in range (lo, hi, step), when arguments are
1417
1471
* PyInt or PyLong objects. step > 0 required. Return a value < 0 if
1418
1472
* & only if the true value is too large to fit in a signed long.
@@ -2014,6 +2068,7 @@ static PyMethodDef builtin_methods[] = {
2014
2068
{"open" , (PyCFunction )builtin_open , METH_VARARGS | METH_KEYWORDS , open_doc },
2015
2069
{"ord" , builtin_ord , METH_O , ord_doc },
2016
2070
{"pow" , builtin_pow , METH_VARARGS , pow_doc },
2071
+ {"Print" , (PyCFunction )builtin_print , METH_VARARGS | METH_KEYWORDS , print_doc },
2017
2072
{"range" , builtin_range , METH_VARARGS , range_doc },
2018
2073
{"reload" , builtin_reload , METH_O , reload_doc },
2019
2074
{"repr" , builtin_repr , METH_O , repr_doc },
0 commit comments