47
PYTHON: From programmer to tamer Alessandro Pisa - 2013/07/03 - EuroPython 2013

PYTHON: From programmer to tamer

  • View
    919

  • Download
    1

Embed Size (px)

DESCRIPTION

Knuth’s sentence "It was nice to learn Python; a nice afternoon" describes very well how easy it is to get engaged and fall in love with our favourite snake. But if you are a professional programmer and use and abuse Python for paying your bills, there is a chance that your beloved pet will go out of control and bite you! To save you some scars, I want to share with you 10 topical steps of my evolution from a Python programmer into a Python tamer.

Citation preview

Page 1: PYTHON: From programmer to tamer

PYTHON: From programmer to tamerAlessandro Pisa - 2013/07/03 - EuroPython 2013

Page 2: PYTHON: From programmer to tamer

Software Integrator

[email protected]

http://blog.redturtle.it

@ale_pisa

Alessandro Pisa

Page 3: PYTHON: From programmer to tamer

HOW I MET PYTHON

Page 4: PYTHON: From programmer to tamer

It was nice to play football

Page 5: PYTHON: From programmer to tamer

But rain happens!

Page 6: PYTHON: From programmer to tamer

Gimme more football!

Page 7: PYTHON: From programmer to tamer

c64

Page 8: PYTHON: From programmer to tamer

Something went wrong with Santa...

Page 9: PYTHON: From programmer to tamer

MSX2

Page 10: PYTHON: From programmer to tamer

Let the children play(otherwise bad things happen!)

Page 11: PYTHON: From programmer to tamer

Blue screen of Death...

...all the time!

Page 12: PYTHON: From programmer to tamer

Ready to become a Nerd

Page 13: PYTHON: From programmer to tamer

HARDWARE FAILURES

Page 14: PYTHON: From programmer to tamer

Let's GIVE Software another chance

True story :(

Page 15: PYTHON: From programmer to tamer

A lucky afternoon!

Page 16: PYTHON: From programmer to tamer

Ready to gooooo!

Page 17: PYTHON: From programmer to tamer

OR NOT?

Page 18: PYTHON: From programmer to tamer

Question time

Page 19: PYTHON: From programmer to tamer

It's A HARD LIFE

Page 20: PYTHON: From programmer to tamer

Only the strongest will survive

Page 21: PYTHON: From programmer to tamer

RTFM!But...

Page 22: PYTHON: From programmer to tamer

Documentation is searchable and browsablehttp://www.python.org/doc/

Page 23: PYTHON: From programmer to tamer

Kaizen

Daily homeworkhttp://planet.python.org/http://twitter.comhttp://plus.google.com...

Don't be afraid of asking helpAny pythonista aroundMailing listIRChttp://stackoverflow.comhttp://www.python.org/community

You are here, and this is

nice!

Page 24: PYTHON: From programmer to tamer

YOur friend PDB

Get in touch with your gears

Page 25: PYTHON: From programmer to tamer

Debugging

A nice writeup to start playing with PDB:http://pymotw.com/2/pdb/

Search for PDB in PyPI: https://pypi.python.org/pypi?%3Aaction=search&term=pdb+debugger&submit=search

Search debugging tools for your app on PyPI!

Page 26: PYTHON: From programmer to tamer

No more print

Page 27: PYTHON: From programmer to tamer

Logging

Logging is an important part of your code!

Page 28: PYTHON: From programmer to tamer

Exceptions

EXCEPTIONS ARE an important part of your code!

Page 30: PYTHON: From programmer to tamer

Use PYPI - The Cheeseshophttps://pypi.python.org/pypi

https://testpypi.python.org/pypi

Page 32: PYTHON: From programmer to tamer

Forget backup copies

● bazaar (bzr)● git (git)● mercurial (hg)● subversion (svn)

Page 33: PYTHON: From programmer to tamer

You can choose your place

No warranty about qualitY of life...

● - http://bitbucket.org (git, hg)● - http://code.google.com (git, hg, svn)● - http://github.org (git, svn)● - http://launchpad.net (bzr)

Page 34: PYTHON: From programmer to tamer

Tickets!

Page 35: PYTHON: From programmer to tamer

A quite comprehensive listhttp://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems

A ticket aggregatorhttps://pypi.python.org/pypi/bugwarrior

Page 36: PYTHON: From programmer to tamer

Tests

Page 37: PYTHON: From programmer to tamer

Be agile!

Page 38: PYTHON: From programmer to tamer

Measure twice, cut once!

Page 39: PYTHON: From programmer to tamer

SCALABILITY

Will your application handle...

... more data?

... more users?

... more REQUEST?

Page 40: PYTHON: From programmer to tamer

Fail fast!

Page 41: PYTHON: From programmer to tamer

The times I was bitten by Python!

Page 42: PYTHON: From programmer to tamer

[email protected]

http://blog.redturtle.it

@ale_pisa

Page 43: PYTHON: From programmer to tamer

Nerd wars

● Use the Source, Luke● The Source will be with you, always● The Source is strong with this one● May the Source be with you

https://pypi.python.org/pypi/jedi

Page 44: PYTHON: From programmer to tamer

Some random tips

Use builtins!all, any, filter, map, sum, zip, ...http://docs.python.org/3/library/functions.html

Code like a Pythonista!http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html

Context managers!http://www.python.org/dev/peps/pep-0343/

Page 45: PYTHON: From programmer to tamer

Use comprehensions

[ale@padme presentations]$python3>>> [x for x in range(10)][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> (x for x in range(10))<generator object <genexpr> at 0xb7187234>>>> {x for x in range(10)}{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}>>> {x:x for x in range(10)}{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, ..., 9: 9}

Page 46: PYTHON: From programmer to tamer

Logging

from logging import getLogger

logger = getLogger('Test logger')

def abs_ratio(x, y):

try:

return abs(x / y)

except:

logger.exception('Error abs_ratio: %r, %r' % (x, y))

return -1

abs_ratio(1, None)

abs_ratio(1, 0)

Page 47: PYTHON: From programmer to tamer

Logging

Error abs_ratio: 1, None

Traceback (most recent call last):

File "logexample.py", line 6, in abs_ratio

return abs(x / y)

TypeError: unsupported operand type(s) for /: 'int'

and 'NoneType'

Error abs_ratio: 1, 0

Traceback (most recent call last):

File "logexample.py", line 6, in abs_ratio

return abs(x / y)

ZeroDivisionError: division by zero

http://pymotw.com/2/logging/http://pymotw.com/2/exceptions/