====== NOTES FROM PYTHON WORKOUT BOOK ======
==== SPLAT OPERATOR ====
Splat operator (aka ''*'') allows a function to receive any number or arguments.
def mysum(*numbers):
print(type(numbers)) # tuple
mysum(1,2,3,4,5) # passing arbitrary number of arguments
mysum(*[2,3,4,5,6]) # unpacking an iterable
==== GEERATORS ====
A generator expression looks just like a list comprehension but with parentheses instead of brackets:
# List comprehension — builds a list
[some_func(w) for w in s.split()]
# Generator expression — produces values lazily
(some_func(w) for w in s.split())
When you pass a generator directly as the only argument to a function, you can drop the extra parentheses:
" ".join(some_func(w) for w in s.split()) # parens omitted (cleaner)