Discover why Python binds default arguments at function definition time rather than execution time. Learn how this design choice relates to the principle of least astonishment and how to avoid common pitfalls with mutable defaults.