Much of this discussion is based on a misconception. Units and SI scale factors are very useful in software that describes or interacts with the real world, but primarily on input and output. They are not normally used for internal calculations. The idea that one carries units on variables interior to a program, and that those units are checked for all interior calculations, is naive. Doing such thing adds unnecessary and often undesired complexity. Rather, it is generally only desirable to allow users to include scale factors and units on values they specify and values they read. This implies that it is only necessary to provide a package for reading and writing physical quantities, and indeed such a package exists: QuantiPhy. QuantiPhy came out of the ideas that were raised the last time this topic was discussed on this mailing list a few years ago.
However, there are two reasons to consider adding both SI scale factors and unit in Python itself. First, SI scale factors have been an international standard way of specifying real value for over 50 years, and use of SI scale factors results in numbers that are more compact and easier to read than using exponential notation. Second, providing units with numbers provides important information, and specifying that information in a program reduces ambiguity, and providing the units results generally decreases the chance of errors. For example, consider the following three versions of the same line of code: virt /= 1048576 virt /= 1.048576e6 virt /= 1MiB The last is the easiest to read and the least ambiguous. Using the units and scale factor on the scaling constant results in an easy to read line that makes it clear what is intended. Notice that in this case the program does not use the specified units, rather the act of specifying the units clarifies the programmers intent and reduces the chance of misunderstandings or error when the code is modified by later programmers. But this suggests that it is not necessary for Python to interpret the units. The most it needs do is to save the units as an attribute so that it is available if needed later. -Ken _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/GLDH5XEUHOZHQRGTEAADDANQX67V3DZ2/ Code of Conduct: http://python.org/psf/codeofconduct/