Using Python defaultdict? Don’t pass a value: Pass a function that returns the default:
Your Python function takes a filename and **kwargs. But this raises an error, since “filename” is passed twice: Solution: Set filename to be positional only: Now any keyword argument works!
Tired of super-long Python Pandas backtraces in Jupyter or IPython? Use the %xmode magic method: %xmode Minimal Now you just see the error, not 50 lines of library internals. You can also set it to Plain, Context, or Verbose.
Think you can’t modify a Python list while iterating? You can append to it: This prints 10, 20, 30, 100, 400, and 900. BUT don’t insert or remove. That’ll cause real trouble.
Think Python functions can return multiple values? They actually return ONE value, a tuple: Unpack it into separate variables:
Let users assign using [] in Python, with custom logic with __setitem__: sl.d[‘2’, ‘4’, ’99’, ‘8’]
The __getitem__ method in Python can do more than simple lookups: Use [] for custom logic — returning filenames, random numbers, or database records.
Want your Python object to support bracket notation []? Define __getitem__:
Python gotcha: Forgetting () on method calls! Result: Error: ‘builtin_function_or_method’ object is not iterable Remember: () calls the method!
Think “from modname import funcname” saves memory in Python? It doesn’t! (Lots of people think it does.) The full module still loads (see sys.modules). The only difference: “modname” isn’t in your namespace, just “funcname”. “from import” is convenient. It doesn’t save memory.