On Monday 23 May 2016 13:15, Siyi Deng wrote: > I have a dynamic library doing some numerical computations. > > I used ctypes to interact it by passing numpy arrays back and forth. > > Python 3.5 gives me the correct results. > > Python 2.7 gives me different, erroneous results, but it never crashes. > > How is this possible? There is no string operations involved whatsoever.
This is only a guess, because you haven't shown your code or data, but I guess it could be related to the change from integer division to true division in Python 3. In Python 2.7, try this at the interactive interpreter. Do you get the same results? >>> import numpy >>> a =numpy.array([1, 2, 3]) >>> a/3 array([0, 0, 1]) That's because in Python 2, the / operator performs integer division, like C. In Python 3, it performs true division. Put "from __future__ import division" at the top of your script. In Python 2.7, it will give you the same behaviour as Python 3, and in Python 3, it will be harmless. Note that there are TWO underscores at the front and end of __future__: >>> from __future__ import division >>> a/3 array([ 0.33333333, 0.66666667, 1. ]) Please note that __future__ imports must be the FIRST line of code. They can follow comments, but must be before any other code. -- Steve -- https://mail.python.org/mailman/listinfo/python-list