[Patches] [ python-Patches-661281 ] reverse method for string objects.

noreply@sourceforge.net noreply@sourceforge.net
Fri, 03 Jan 2003 00:51:04 -0800


Patches item #661281, was opened at 2003-01-02 15:06
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=661281&group_id=5470

Category: Core (C code)
Group: Python 2.3
Status: Open
Resolution: Rejected
Priority: 5
Submitted By: Wojtek Walczak (gminick)
Assigned to: Nobody/Anonymous (nobody)
Summary: reverse method for string objects.

Initial Comment:
Well, in python 2.3a1 you can reverse a string in dozens of ways, for example:
>>> a = 'string'
>>> a[::-1]
'gnirts'
>>> reduce(lambda x,y: y+x, a)
'gnirts'
>>> b = list(a)
>>> b.reverse()
>>> "".join(b)
'gnirts'
but there's no simple method as function reverse() in plenty of languages. That patch changes that situation by adding reverse method to Objects/stringobject.c
Tested on Linux 2.4.5 with Python2.3alpha1 with i586 platform.
Feel free to improve that or throw it away :)

----------------------------------------------------------------------

>Comment By: Raymond Hettinger (rhettinger)
Date: 2003-01-03 03:51

Message:
Logged In: YES 
user_id=80475

For educational purposes, here are a few thoughts.

* the malloc for "old" is not used and the memory for it is 
permanently lost when overwritten by 
PyString_AS_STRING.

* PyString_AS_STRING returns a pointer to an existing 
buffer which should not be altered, reference counted, or 
freed (per 7.3.1 of the C API manual).

* In general, malloc() should not be used, PyMem_Alloc 
and Free are their Python managed counterparts.

* Use SF's search box (under feature requests) to find 
previous discussions and reviews.  This will make sure 
that your not proposing an idea that has already been 
discussed and rejected.  In this case, see feature request 
494240.

* A good way to get started making contributions is to 
study and make review comments on other people's 
patches or to propose bug fixes.

* FYI, the discussions can continue even after a patch is 
closed (it doesn't need to be re-opened for that).

Hope this is of some help to you.

Looking forward to your future contributions.





----------------------------------------------------------------------

Comment By: Wojtek Walczak (gminick)
Date: 2003-01-03 03:29

Message:
Logged In: YES 
user_id=679226

loewis wrote:
> What other languages have builtin reversal of strings?
For example ruby ;] (...but, well, looks like it really 
isn't too important method, i'll try to think about something
more useful). 

> In addition, your patch is wrong: it leaks len bytes per 
> call.
OK, can you tell me how to change that?

ps. in the world of python developers I'm new, so hi everyone  ;)

----------------------------------------------------------------------

Comment By: Raymond Hettinger (rhettinger)
Date: 2003-01-03 03:18

Message:
Logged In: YES 
user_id=80475

This has been proposed and rejected before.  The reasons 
were lack of non-toy use cases (though somebody actually 
found one or two real world examples), its value as 
classroom exercise, and avoiding interface bloat.

Now, with the "string"[::-1], there is even less of a case for 
reverse (TOOWTDI).

With apologies, marking as rejected and closing the 
patch.  Future patches and bug fixes are always 
welcomem as are any efforts to contribute.  Even if a 
patch doesn't get accepted, it is appreciated.


----------------------------------------------------------------------

Comment By: Martin v. L÷wis (loewis)
Date: 2003-01-02 18:25

Message:
Logged In: YES 
user_id=21627

-1. How often do you need to reverse a string, outside
assignments for programming course? For the latter purpose,
it would actually hurt if Python provided a method for that.

What other languages have builtin reversal of strings?

In addition, your patch is wrong: it leaks len bytes per call.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=661281&group_id=5470