How do you limit property value without constraints? Let's say I have an "empty" that I want to only be able to move in the X axis, and only between 0 and 1. I can turn on the transform locks for Y and Z, but how do I limit X to only values between 0 and 1?

I tried the "Limit Location" constraint but it doesn't actually limit the actual value of the property, so unfortunately any drivers or expressions referencing that property will still see values out of that range even if the physical object appears to be within range.
You can use a driver to do that:



Right click on the X location in the object's property panel and choose "manually create later (single)".



Now open a view with the graph editor (1)

Set it to drivers mode (2)

Select the X Location on your object (3)

Make the right panel appear (4) N, choose the driver tab, set the type to "scripted expression", check "use self" so that we can use object's own data. For instance here X location is "self.location[0]".

Then enter the wanted expression. To be between 0 and 1, type: min(1,max(self.location[0],0)).