the " "" "and "uspecifiers return raw python objects of type pyobject "sand "urestrict this object to be string or unicode stringrespectively the " !conversion requires two argumentsa pointer to python type object and pointer to pyobject into which pointer to the object is placed typeerror is raised if the type of the object doesn' match the type object for example/parse list argument *pyobject *listobjpyarg_parsetuple(args," !"&pylist_type&listobj)the following list shows the type names corresponding to some python container types that might be commonly used with this conversion name python type pylist_type pydict_type pyset_type pyfrozenset_type pytuple_type pyslice_type pybytearray_type list dict set frozen_set tuple slice bytearray the " &conversion takes two arguments (converteraddrand uses function to convert pyobject to data type converter is pointer to function with the prototype int converter(pyobject *objvoid *addr)where obj is the passed python object and addr is the address supplied as the second argument in pyarg_parsetuple(converter(should return on success on failure on errorthe converter should also raise an exception this kind of conversion can be used to map python objects such as lists or tuples into data structures for examplehere is possible implementation of the distance(wrapper from our earlier code/convert tuple into point structure *int convert_point(pyobject *objvoid *addrpoint * (point *addrreturn pyarg_parsetuple(obj,"ii"& -> & -> )pyobject *py_distance(pyobject *selfpyobject *argspoint double resultif (!pyarg_parsetuple(args," & &"convert_point& convert_point& )return nullresult distance(& ,& )return py_buildvalue(" ",result) lib fl ff