greenflame wrote: > I want to make a function that does the following. I will call it > thefunc for short. > > >>> s = "Char" > >>> thefunc(s) > >>> s > '||Char>>' > > I tried the following > > def thefunc(s): > s = "||" + s + ">>" > > The problem is that if I look at the string after I apply the function > to it, it is not modified. I realized that I am having issues with the > scope of the variables. The string in the function, s, is local to the > function and thus I am not changing the string that was inputed, but a > copy. I cannot seem to figure out how to get what I want done. Thank > you for your time.
You cannot do what you are trying to do directly. Strings are immutable objects. Once a string is created, that string cannot be modified. When you operate on a string, you produce a different string. Functions which operate on a string should return their value: >>> def thefunc(s): ... return '||' + s + '>>' ... >>> s = 'Char' >>> s = thefunc(s) >>> s '||Char>>' There /are/ a few hacks which will do what you want. However, if you really need it, then you probably need to rethink your program design. Remember, you can't change a string since a string is immutable! You can change a variable to bind to another string. In the following example, s gets rebound to the new string while t keeps the original string value: >>> def changeString(varName): ... globalDict = globals() ... globalDict[varName] = '||' + globalDict[varName] + '>>' ... return ... >>> s = 'Char' >>> t = s >>> changeString('s') >>> s '||Char>>' >>> t 'Char' Further note that this only affects variables in the global scope. I hope this helps! --Jason -- http://mail.python.org/mailman/listinfo/python-list