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