SlideShare a Scribd company logo
PRACTICAL ZEN
OF PYTHON
@FEMMERLING - ID-PYTHON JOGJA NOV
2016
PRACTICAL ZEN OF PYTHON
A BIT ABOUT ME
▸Fauzan Erich Emmerling
▸Married, 3 kids all of which will grow up learning python :)
▸Using python since 2010 and still learning more
▸Lives in Jogja after 14 years struggling with massive traffic jam in
Jakarta
▸VP of Engineering at Prism, yes we’re hiring!
▸@femmerling on twitter @fauzan on python-id slack
fauzan@python.or.id fauzan@prismapp.io
THE ZEN OF
PYTHON
IS ALL ABOUT
ENGINEERING
“IN REALITY, PROGRAMMING
LANGUAGES ARE HOW
PROGRAMMERS EXPRESS AND
COMMUNICATE IDEAS — AND THE
AUDIENCE FOR THOSE IDEAS IS
OTHER PROGRAMMERS, NOT
COMPUTERS.”
Guido van Rossum
PRACTICAL ZEN OF PYTHON
PRACTICAL ZEN OF PYTHON
THE ZEN OF PYTHON>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
PRACTICAL ZEN OF PYTHON
BEAUTIFUL IS BETTER THAN UGLY
▸Write codes that is nice to read and understand
▸Simple expression syntax
▸Be consistent
▸I know this is hard: pick meaningful names
PRACTICAL ZEN OF PYTHON
BEAUTIFUL IS BETTER THAN UGLY -
CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
EXPLICIT IS BETTER THAN IMPLICIT
▸State what you mean, explicitly
▸The for loop is very explicit
▸Remember, the goal is to exchange ideas
▸Leverage the Booleans
▸Be explicit and revealing when it comes to variable or
function naming
PRACTICAL ZEN OF PYTHON
EXPLICIT IS BETTER THAN IMPLICIT -
CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
SIMPLE IS BETTER THAN COMPLEX
▸Always aim for simplicity
▸Do not use OOP when it’s not needed
▸Aim for lesser lines of code
▸Less code == less confusion == more clarity
PRACTICAL ZEN OF PYTHON
SIMPLE IS BETTER THAN COMPLEX -
CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
COMPLEX IS BETTER THAN
COMPLICATED
▸When simple is not possible, be complex
▸Complicated can lead to misunderstanding
▸Complex code increases comprehension
PRACTICAL ZEN OF PYTHON
COMPLEX IS BETTER THAN
COMPLICATED - CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
FLAT IS BETTER THAN NESTED
‣ Use modules instead of nested if
‣ Use stdlib, it’s batteries included
PRACTICAL ZEN OF PYTHON
FLAT IS BETTER THAN NESTED - CODE
EXAMPLE
PRACTICAL ZEN OF PYTHON
SPARSE IS BETTER THAN DENSE
‣ Be loosely coupled
‣ Do one thing and do it well - - the UNIX philosophy
PRACTICAL ZEN OF PYTHON
SPARSE IS BETTER THAN DENSE -
CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
READABLITY COUNTS
‣ Use consistent whitespace (space VS tabs)
‣ Use inline documentation
‣ Code for humans
PRACTICAL ZEN OF PYTHON
READABILITY COUNTS - CODE EXAMPLE
PRACTICAL ZEN OF PYTHON
SPECIAL CASE ARE NOT SPECIAL
ENOUGH TO BREAK THE RULES
‣ Everything is an object
‣ The scope rule
PRACTICAL ZEN OF PYTHON
ALTHOUGH PRACTICALITY BEATS PURITY,
ERRORS SHOULD NEVER PASS SILENTLY,
UNLESS EXPLICITLY SILENCED
‣ Python has a multi-model approach. It is:
‣ Procedural
‣ OOP
‣ Functional
‣ Errors should be handled using exceptions
‣ Graceful handling should be done via try - except
PRACTICAL ZEN OF PYTHON
IN THE FACE OF AMBIGUITY, REFUSE
THE TEMPTATION TO GUESS
‣ Type handling is sometimes surprising
‣ You can’t add 2 different types
‣ You can multiply them
PRACTICAL ZEN OF PYTHON
THERE SHOULD BE ONE - - AND PREFERABLY ONLY
ONE - - OBVIOUS WAY TO DO IT.
ALTHOUGH THAT WAY MAY NOT BE OBVIOUS AT
FIRST UNLESS YOU’RE DUTCH
‣ Be DRY
‣ Don’t be redundant
‣ Better learning curve
‣ Easier for distributed teams
‣ When confused, remember that the BDFL is Dutch :)
PRACTICAL ZEN OF PYTHON
NOW IS BETTER THAN NEVER,
ALTHOUGH NEVER IS OFTEN BETTER THAN *RIGHT*
NOW‣ Ports to other language, i.e: Jython, IronPython
‣ The python 2 VS 3 battle
‣ stdlib has stricter requirements
PRACTICAL ZEN OF PYTHON
IF THE IMPLEMENTATION IS HARD TO EXPLAIN, IT’S
A BAD IDEA
IF THE IMPLEMENTATION IS EASY TO EXPLAIN, IT
MAY BE A GOOD IDEA
‣ Back to Guido’s quote on slide 3
‣ Explain ideas through your codes
‣ Simplicity is the ultimate sophistication
PRACTICAL ZEN OF PYTHON
NAMESPACES ARE ONE HONKING GREAT
IDEA - - LET’S DO MORE OF THOSE
‣ Closures for better module separation
‣ Fun to use
SO WHAT’S
NEXT?
PRACTICAL ZEN OF PYTHON
KEY TAKEAWAYS
▸Make your code understandable
▸Simplicity is the ultimate sophistication
▸When in doubt, “import this”
▸Do it today
QUESTION
S?
THANKS!!!

More Related Content

PDF
The Zen of Python
PDF
THE ZEN OF PYTHON
PPTX
Buenas Prácticas de Python
PPTX
Coral id-python
PPTX
Prism Product Demo and Under the Hood
PPT
Japan
PPT
09p1.Dress And Appearance
PPT
Zen Stories for Management Students
The Zen of Python
THE ZEN OF PYTHON
Buenas Prácticas de Python
Coral id-python
Prism Product Demo and Under the Hood
Japan
09p1.Dress And Appearance
Zen Stories for Management Students

Viewers also liked (17)

PPTX
Rowing: London Tideway River Thames navigation & steering for coxswains
PPTX
Indian fashion from ancient to modern
PDF
Fashion and clothing in ancient times
PPTX
Fashion in ancient civilizations
PPTX
Fashion and clothing in ancient civilisations
PDF
Building Automated REST APIs with Python
PPT
Greek Fashion
PPTX
Fashion in Ancient Greece and Rome
PDF
Pass That Exam! Test Prep Strategies & Resources
PDF
Groovy Grammar! Interesting ways to learn grammar!
PDF
Developing RESTful Web APIs with Python, Flask and MongoDB
PDF
Micro Expressions
PDF
Work Hacks : Body Language
PDF
Top Office Etiquette Mistakes
PDF
You Are Not As Rational As You Think
PDF
Digitized Student Development, Social Media, and Identity
PDF
GAME ON! Integrating Games and Simulations in the Classroom
Rowing: London Tideway River Thames navigation & steering for coxswains
Indian fashion from ancient to modern
Fashion and clothing in ancient times
Fashion in ancient civilizations
Fashion and clothing in ancient civilisations
Building Automated REST APIs with Python
Greek Fashion
Fashion in Ancient Greece and Rome
Pass That Exam! Test Prep Strategies & Resources
Groovy Grammar! Interesting ways to learn grammar!
Developing RESTful Web APIs with Python, Flask and MongoDB
Micro Expressions
Work Hacks : Body Language
Top Office Etiquette Mistakes
You Are Not As Rational As You Think
Digitized Student Development, Social Media, and Identity
GAME ON! Integrating Games and Simulations in the Classroom
Ad

Recently uploaded (20)

PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PPTX
Tartificialntelligence_presentation.pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
project resource management chapter-09.pdf
PDF
1 - Historical Antecedents, Social Consideration.pdf
PPTX
Chapter 5: Probability Theory and Statistics
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Hybrid model detection and classification of lung cancer
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Enhancing emotion recognition model for a student engagement use case through...
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
A comparative analysis of optical character recognition models for extracting...
Univ-Connecticut-ChatGPT-Presentaion.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Building Integrated photovoltaic BIPV_UPV.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
WOOl fibre morphology and structure.pdf for textiles
Tartificialntelligence_presentation.pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
project resource management chapter-09.pdf
1 - Historical Antecedents, Social Consideration.pdf
Chapter 5: Probability Theory and Statistics
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Hybrid model detection and classification of lung cancer
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Enhancing emotion recognition model for a student engagement use case through...
Ad

Practical Zen of Python

  • 1. PRACTICAL ZEN OF PYTHON @FEMMERLING - ID-PYTHON JOGJA NOV 2016
  • 2. PRACTICAL ZEN OF PYTHON A BIT ABOUT ME ▸Fauzan Erich Emmerling ▸Married, 3 kids all of which will grow up learning python :) ▸Using python since 2010 and still learning more ▸Lives in Jogja after 14 years struggling with massive traffic jam in Jakarta ▸VP of Engineering at Prism, yes we’re hiring! ▸@femmerling on twitter @fauzan on python-id slack fauzan@python.or.id fauzan@prismapp.io
  • 3. THE ZEN OF PYTHON IS ALL ABOUT ENGINEERING
  • 4. “IN REALITY, PROGRAMMING LANGUAGES ARE HOW PROGRAMMERS EXPRESS AND COMMUNICATE IDEAS — AND THE AUDIENCE FOR THOSE IDEAS IS OTHER PROGRAMMERS, NOT COMPUTERS.” Guido van Rossum PRACTICAL ZEN OF PYTHON
  • 5. PRACTICAL ZEN OF PYTHON THE ZEN OF PYTHON>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
  • 6. PRACTICAL ZEN OF PYTHON BEAUTIFUL IS BETTER THAN UGLY ▸Write codes that is nice to read and understand ▸Simple expression syntax ▸Be consistent ▸I know this is hard: pick meaningful names
  • 7. PRACTICAL ZEN OF PYTHON BEAUTIFUL IS BETTER THAN UGLY - CODE EXAMPLE
  • 8. PRACTICAL ZEN OF PYTHON EXPLICIT IS BETTER THAN IMPLICIT ▸State what you mean, explicitly ▸The for loop is very explicit ▸Remember, the goal is to exchange ideas ▸Leverage the Booleans ▸Be explicit and revealing when it comes to variable or function naming
  • 9. PRACTICAL ZEN OF PYTHON EXPLICIT IS BETTER THAN IMPLICIT - CODE EXAMPLE
  • 10. PRACTICAL ZEN OF PYTHON SIMPLE IS BETTER THAN COMPLEX ▸Always aim for simplicity ▸Do not use OOP when it’s not needed ▸Aim for lesser lines of code ▸Less code == less confusion == more clarity
  • 11. PRACTICAL ZEN OF PYTHON SIMPLE IS BETTER THAN COMPLEX - CODE EXAMPLE
  • 12. PRACTICAL ZEN OF PYTHON COMPLEX IS BETTER THAN COMPLICATED ▸When simple is not possible, be complex ▸Complicated can lead to misunderstanding ▸Complex code increases comprehension
  • 13. PRACTICAL ZEN OF PYTHON COMPLEX IS BETTER THAN COMPLICATED - CODE EXAMPLE
  • 14. PRACTICAL ZEN OF PYTHON FLAT IS BETTER THAN NESTED ‣ Use modules instead of nested if ‣ Use stdlib, it’s batteries included
  • 15. PRACTICAL ZEN OF PYTHON FLAT IS BETTER THAN NESTED - CODE EXAMPLE
  • 16. PRACTICAL ZEN OF PYTHON SPARSE IS BETTER THAN DENSE ‣ Be loosely coupled ‣ Do one thing and do it well - - the UNIX philosophy
  • 17. PRACTICAL ZEN OF PYTHON SPARSE IS BETTER THAN DENSE - CODE EXAMPLE
  • 18. PRACTICAL ZEN OF PYTHON READABLITY COUNTS ‣ Use consistent whitespace (space VS tabs) ‣ Use inline documentation ‣ Code for humans
  • 19. PRACTICAL ZEN OF PYTHON READABILITY COUNTS - CODE EXAMPLE
  • 20. PRACTICAL ZEN OF PYTHON SPECIAL CASE ARE NOT SPECIAL ENOUGH TO BREAK THE RULES ‣ Everything is an object ‣ The scope rule
  • 21. PRACTICAL ZEN OF PYTHON ALTHOUGH PRACTICALITY BEATS PURITY, ERRORS SHOULD NEVER PASS SILENTLY, UNLESS EXPLICITLY SILENCED ‣ Python has a multi-model approach. It is: ‣ Procedural ‣ OOP ‣ Functional ‣ Errors should be handled using exceptions ‣ Graceful handling should be done via try - except
  • 22. PRACTICAL ZEN OF PYTHON IN THE FACE OF AMBIGUITY, REFUSE THE TEMPTATION TO GUESS ‣ Type handling is sometimes surprising ‣ You can’t add 2 different types ‣ You can multiply them
  • 23. PRACTICAL ZEN OF PYTHON THERE SHOULD BE ONE - - AND PREFERABLY ONLY ONE - - OBVIOUS WAY TO DO IT. ALTHOUGH THAT WAY MAY NOT BE OBVIOUS AT FIRST UNLESS YOU’RE DUTCH ‣ Be DRY ‣ Don’t be redundant ‣ Better learning curve ‣ Easier for distributed teams ‣ When confused, remember that the BDFL is Dutch :)
  • 24. PRACTICAL ZEN OF PYTHON NOW IS BETTER THAN NEVER, ALTHOUGH NEVER IS OFTEN BETTER THAN *RIGHT* NOW‣ Ports to other language, i.e: Jython, IronPython ‣ The python 2 VS 3 battle ‣ stdlib has stricter requirements
  • 25. PRACTICAL ZEN OF PYTHON IF THE IMPLEMENTATION IS HARD TO EXPLAIN, IT’S A BAD IDEA IF THE IMPLEMENTATION IS EASY TO EXPLAIN, IT MAY BE A GOOD IDEA ‣ Back to Guido’s quote on slide 3 ‣ Explain ideas through your codes ‣ Simplicity is the ultimate sophistication
  • 26. PRACTICAL ZEN OF PYTHON NAMESPACES ARE ONE HONKING GREAT IDEA - - LET’S DO MORE OF THOSE ‣ Closures for better module separation ‣ Fun to use
  • 28. PRACTICAL ZEN OF PYTHON KEY TAKEAWAYS ▸Make your code understandable ▸Simplicity is the ultimate sophistication ▸When in doubt, “import this” ▸Do it today