Steven D'Aprano <[email protected]> added the comment:
I doubt this is important enough to go into builtins, the only practical
use-case I know of for this function is with numbers, so this could go in the
math module.
But putting that aside, there are some other problems:
- it isn't clear that clamp() is meaningful for anything that could possibly
need a key function;
- the behaviour you have for iterable arguments is inconsistent with the
existing behaviour of min(max(x, a), b):
min(max('a string', 'd'), 'm')
=> returns 'd' not ['d', 'd', 'm', 'm', 'm', 'i', 'm', 'g']
- your iterable behaviour is easily done with a comprehension and doesn't need
to be supported by the function itself
[clamp(x, a, b) for x in values]
- what do you intend clamp() to do with NAN arguments?
- for numbers, it is sometimes useful to do one-sided clamping, e.g. clamp(x,
-1, ∞).
You should read over this thread here:
https://mail.python.org/pipermail/python-ideas/2016-July/041262.html
----------
nosy: +steven.daprano
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue36788>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com