Hidden features of Python
hidden-features, python
Solution
Chaining comparison operators:
>>> x = 5
>>> 1 < x < 10
True
>>> 10 < x < 20
False
>>> x < 10 < x*10 < 100
True
>>> 10 > x <= 9
True
>>> 5 == x > 4
True
In case you're thinking it's doing `1 < x`, which comes out as `True`, and then comparing `True < 10`, which is also `True`, then no, that's really not what happens (see the last example.) It's really translating into `1 < x and x < 10`, and `x < 10 and 10 < x * 10 and x*10 < 100`, but with less typing and each term is only evaluated once.
Problem
What are the lesser-known but useful features of the Python programming language? - Try to limit answers to Python core. - One feature per answer. - Give an example and short description of the feature, not just a link to documentation. - Label the feature using a title as the first line. Quick links to answers: - Argument Unpacking - Braces - Chaining Comparison Operators - Decorators - Default Argument Gotchas / Dangers of Mutable Default arguments - Descriptors - Dictionary default `.get` value - Docstring Tests - Ellipsis Slicing Syntax - Enumeration - For/else - Function as iter() argument - Generator expressions - `import this` - In Place Value Swapping - List stepping - `__missing__` items - Multi-line Regex - Named string formatting - Nested list/generator comprehensions - New types at runtime - `.pth` files - ROT13 Encoding - Regex Debugging - Sending to Generators - Tab Completion in Interactive Interpreter - Ternary Expression - `try/except/else` - Unpacking+`print()` function - `with` statement
Related problems
- Is it possible to set a number to NaN or infinity?
- Double Iteration in List Comprehension
- Python ternary operator
- What does the "yield" keyword do in Python?
- Showing the stack trace from a running Python application
- What are metaclasses in Python?
- How do you use the ellipsis slicing syntax in Python?
- Scripting inside a Python application