On Apr 14, 10:35 pm, rahul <rahul03...@gmail.com> wrote: > Hi, > i need to write a 'c extension function' in this function i need to > change argument value with which this function called.
The appropriate way for a function to give output is to return a value, or a tuple of values. example: def get_next_token(input_buffer, offset): """get next lexical token, starting at offset return (the_token, new offset)""" length = find_len_of_token_somehow(input_buffer, offset) new_offset = offset + length return input_buffer[offset:new_offset], new_offset and you can call it by token, pos = get_next_token(buff, pos) return input > ie, > if a python code like > import changeValue as c > arg="old value" > c.changeValue(arg) > print arg Fortunately, you can't construct such a thing in Python or in a C extension. Consider the following: print "two", 2 c.changeValue(2) print "two maybe", 2 What would you want to it to print the second time? two maybe new value? > > then it print "new value" > > i write code like this.. > > static PyObject *changeValue(PyObject *self,PyObject *args){ > PyObject *sampleObj, *m ; > char *argName; > > if (!PyArg_ParseTuple(args, "O", &sampleObj)){ > return NULL; > } > > m = PyImport_AddModule("__main__"); This means you are assuming/hoping this function will be called only from the main script ... > PyObject_SetAttrString(m, argName, "new value"); Even if you know the name, you have the problem that it is changing the __main__ module's globals ... but the arg could be local or it could be an expression ... > return Py_BuildValue(""); > > } > > But for this i need to know the argument name with which this function > called . > Is this possible to know argument name in extended c function? if yes, > than how i can do it??? No, it's not possible to know the argument name (without help from the caller e.g. keyword args), it may not even have a name, it may have multiple names ... this is just another variation of the old "what is the name of my object" FAQ. Why don't you tell us what you are trying to achieve (a higher-level goal than "I need to poke some value at/into some variable of doubtful name and unknowable location"), and then we might be able to give you some ideas. HTH, John -- http://mail.python.org/mailman/listinfo/python-list