What Makes Python AWESOME?¶
Author¶
- Raymond Hettinger (@raymondh)
Context for Success¶
OS License
- Commercial distributions
- Sponsor advancements
- Zen
- Guides the language and community
- Community
- Killer feature
- Repositories (Pypi)
- Solved problems are a pip install away.
High level qualities¶
- Ease of learning
- Can build a Python programmer in a week and a half
- Rapid Dev Cycle
- Used in a high frequency trading company
- More important to react to market
Economy of Expression
- Readability and Beauty
- Makes it easy to work in, and less tiring
- One way to do it
- Once you learn an aspect, you can apply it somewhere else
A bit of Awesomeness¶
Five minutes to write code to find duplicate files.
Can throw away.
- How long to write in C?
- Infinite
- You won’t write it
- Python programmers write things C programmers won’t.
Just the same as any other scripting language?
Why is Python Awesome?¶
Indentation¶
- How we write psuedocode
- Contributes to readability
- Shows an example of indentation in C lying
Iterator protocol¶
- Lots of stuf is iterable
- Hold the language together
- sets, lists, dicts, files
- shows sorted(set(‘abracadabra’))
- sorted(set(open(filename)))
- Like legos: fit together perfectly
- Shows an analogy between that and Unix pipes.
- Not enough, GOF pattern
List Comprehension¶
- More flexibile than functional style
Generators¶
- Easiest way to write an iterator
- Adds one keyword (yield)
- Makes tricky iterators easy
Generator Expressions¶
- Produce values just-in-time
- sum(x**3 for x in xrange(1000000))
- In Pypy, roughly C speed
- setcomps and dictcomps
Generators that accept Input¶
- generators support send(), throw(), and close()
- Unique to Python
- Can make Twisted’s inline deferreds using this
- A state machine with callbacks.
- Write code that looks procedural, but uses callbacks
- Monocle (https://github.com/saucelabs/monocle), Twisted inline deferred
- Fantastic improvement of callback code.
Decorators¶
- Expressive
- Always worked for function
- Initial response: Syntactic sugar
- Community rose up and demanded it from Guido.
- Easy on the eyes
- Shows example using itty (https://github.com/toastdriven/itty) using decorators for routing.
- Ping into another machine using curl to lookup environment variables in 3 lines.
- Web service in 20 lines, made possible by decorators
- Thanks Django!
With Statement¶
- Clean, elegant
- Profoundly important
- Sandwich analogy
- Subroutines factor out the ‘meat’ of the code
- With statments factor out the ‘bread’ of the code
- Factors out common setup and teardown methods.
Abstract Base Classes¶
Uniform definition of what it means to be a sequence, mapping, etc.
Ability to override isinstance() and issubclass()
Duck-typing says: “If it says it’s a duck...”
Mixin capability (DictMixin)
- Can provide the base of a class
- shows using a list-based set with __iter__, __contains__, and something else
- Mixin provides the rest