I'm writing some 3D math classes for Python. I'd like to make a Point3 class that is separate from Vec3 in the following respects:

Point3 - Point3 = Vec3
  Point3 + Vec3 = Point3

Otherwise, all operations on Vec3 you can perform on Point3. The motivation for this is to separate the mathematical concept of a point from a vector, hopefully leading to clearer type separation and an easier to understand API.
However, with Python's duck typing and the common practice of expecting a certain interface regardless of type, is it better just to use a Vec3? Is it more efficient?
Yes, this is poor design, as adding or subtracting two points has no conceptual meaning.
You can, however, add a vector to a point (obtaining a point) or add two vectors (obtaining a vector), so it sounds like you are just confusing points with vectors.
A point is not a vector, but it can be implemented in terms of one.  In programming, we model "implemented-in-terms-of" relationships using composition - the Point class will contain a single private Vector instance, and use it to handle the logic of whatever methods it exposes.
In fact, because a Vector can already do all the same things a Point can (plus more), you may want to consider not even bothering to make the distinction, and using only the Vector class, with no Point class at all.  Whether or not this is a good idea depends on what your API will be used for.
Is the concept of a Point3 class, separate from a Vec3 class, unpythonic?