Python
Single Responsibility Principle
SRP
- A module, class or a method should have only one responsibility
- "A class should have only one reason to change"
Det betyder:
- at en metode kun gør een ting
- at en klasse kun er ansvarlig for een ting
- at en Jupyter Notebook kun gør een ting (f.eks. træner på data)
- at en trænet model kun gør een ting
- at et Python miljø kun er til een applikation
- at et projekt kun er til eet formål
Rå facts

- Opfundet af Guido van Rossum og frigivet i 1991
- Navngivet efter "Monty Python"
- Interpreted sprog (fortolket sprog)
- Objektorienteret og funktionsorienteret
- Dynamisk typesystem
- Generelt anvendeligt -dvs. både til web og ML og andre formål
- Fokus på læsbarhed - ingen mærkelige tegn
- "Pythonic" code - god anvendelse af Python idiomer
- "cross platform"
import this
Anvendelse
- Web
- Backend
- Database
- GUI
- Math
- Science
- Test
Python Package Index
- A.K.A PyPi, A.K.A "the cheese shop"
- pip benytter PyPi som default repository
- https://pypi.python.org/pypi
- 121.035 pakker
Dependency management
- requirements.txt file
- pip install -r requirements.txt
- pip freeze > requirements.txt
appnope==0.1.0
bleach==1.5.0
botocore==1.6.5
certifi==2017.7.27.1
chardet==3.0.4
cycler==0.10.0
Wheels
- komplet applikation
- .whl extension
- kan installeres fra pip
- indeholder flere dependencies
- Tensorflow installeres med Wheel
- Wheels pakker for windows kan findes her: https://www.lfd.uci.edu/~gohlke/pythonlibs/
VirtualEnv
- https://virtualenv.pypa.io/en/stable/
- Undgå versionskonflikter
- Isolering af applikationer/miljøer
- God måde at sende miljødefinitioner til andre teammedlemmer
Vi benytter VirtualEnv fra Anaconda - mere om det senere
Communities
ML i Python
Analyse
Deep learning
- Tensorflow
- Theano
- Caffe
Anaconda
- Data science platform
- +4,5 millioner brugere
- +1.000 data science packages
- Økosystem
- Distribution med stort udvalg af data science packages
- Jupyter notebooks
- Virtuelle miljøer
- Conda
Conda create env
- conda create -n ENV python=3.6 anaconda
- source activate ENV
- conda info -e (se alle miljøer)
- source deactivate ENV
- conda remove -n ENV -all
conda env export
Share environments
- source activate ENV
- conda env export > environment.yml
- conda env create -f environment.yml
Jupyter
- interactive notebooks
- udviklingsværktøj
- understøtter flere sprog
Andre IDE
- PyCharm
- Vim
- Wing IDE
Udvikling af kode
- Versionering
- Tests
- Opdeling i funktionalitet
- Moduler
- Klasser
Tests
import unittest
def fun(x):
return x + 1
class MyTest(unittest.TestCase):
def test(self):
self.assertEqual(fun(3), 4)
Tests i Jupyter
To be defined....
Python
By Søren Pedersen
Python
- 388