Python

Viktige avslutningstemaer

Lærebok, kapittel 9.3:

File Objects

# Halterman, R. L, 2019. Fundamentals of Python Programming
#
# Listing 9.5: simplefileread.py

f = open('planeter.txt')   # f is a file object
for line in f:             # Read each line as text
    print(line[0:-1])      # Remove trailing newline character
f.close()                  # Close the file
# Halterman, R. L, 2019. Fundamentals of Python Programming
#
# Listing 9.6: simplerread.py

with open('planeter.txt') as f:  # f is a file object
    for line in f:               # Read each line as text
        print(line[0:-1])        # Remove trailing newline character
                                 # No need to close the file
# Varianter av open-kommandoen


open('planeter.txt')	    # standard-valg 
                            # - åpner fil for lesing
open('planeter.txt', 'r')   # åpner fil for lesing 
                            # - eksplisitt uttrykt

  
open('planeter.txt', 'w')   # åpner fil for skriving 
                            # - sletter eventuell eksisterende fil
open('planeter.txt', 'a')   # åpner fil for skriving 
                            # - legger nytt innhold til eksisterende

  
# angir tegnsett - viktig for å behandle norske tegn
open('planeter.txt', 'a', encoding='utf-8') 

Skriving til fil - inkludert formatering med f-strings

Valg av verktøy
3 alternativer

 

Jupyterlab - skyløsning

  • Ikke tilgjengelig når semsteret er over
  • Kan eksportere *.py-fil fra Jupyterlab (executable script)

Jupyterlab - på egen PC

  • Anaconda-installasjon
  • Kan eksportere *.py-fil fra Jupyterlab (executable script)

Anaconda - VS Code

  • Ekstra muligheter utover Jupyterlab:
  • Kan opprette *.py -filer direkte
  • *.py-filene kan kjøres fra terminalvindu (Anaconda Prompt)

Jupyter notebook vs.
"exectutable script" (*.py)

 

  • Notebooks trenger en mer omfattende installasjon for å kjøres.
  • *.py-filer trenger bare en ren python-installasjon
  • *.py-filer kan lettere inngå i en sammenheng med andre python-programmer (f.eks. ulike former for automatisering)
  • Notebooks egner seg veldig godt der man skal både forklare teori og foreta utregninger.
  • Notebooks kan eksporteres som html-filer og pdf-filer.

Om forskjell på
mutable og immutable types

 

mutable = modifiserbar

 

Disse er modifiserbare:

  • list
  • dictionary (ikke nøklene (keys))
  • set (elementene må være ikke-modifiserbare)

 

Modifiserbar innebærer f.eks.

  • legge til og slette elementer
  • endre elementer (bytte ut)

immutable = ikke modifiserbar

 

Disse er ikke modifiserbare:

  • Enkelt-verdier
    • int
    • float
    • bool
  • str (string)
  • tuple

 

mutable vs. immutable - hvordan merker vi forskjellen?

 

modifiserbare objekter kan forandres "in-place"

 

hvis vi skal lage en ny variant av et ikke-modifiserbart objekte, dannes det et nytt objekt

 

demo:

 

funksjoner, lokale variabler og scope

 

# Funksjon for å lage et datasett ved simulering - 
# trekking av tilfeldige tall fra normalfordeling
#
# n: antall punkt som skal genereres
# mu: forventning
# sigma: standardavvik

def createRandomPoints(n, mu, sigma):
    S = {}
    for i in range(1, n + 1):
        x = random.normalvariate(mu,sigma)
        y = random.normalvariate(mu,sigma)
        S[i] = x, y
    return S

Lokale variabler inne i funksjonen er ikke synlige utenfor funksjonen - de har lokalt scope

Vi ønsker generelt så få globale variabler som mulig.

 

Grunn: Vi kan få navne-kollisjoner

 

 

 

Funksjoner kan skjule variabler fra globalt scope.

dokumentasjon av funksjoner, moduler

 

def createRandomPoints(n, mu, sigma):
    """ Funksjon for å lage et datasett ved simulering - 
        trekking av tilfeldige tall fra normalfordeling. 
      
            n: antall punkt som skal genereres
            mu: forventning
            sigma: standardavvik

        Returnerer dictionary med 
        
            punkt-id, (x,y)    
    """
    S = {}
    for i in range(1, n + 1):
        x = random.normalvariate(mu,sigma)
        y = random.normalvariate(mu,sigma)
        S[i] = x, y
    return S

Eksempel på docstring for dokumentasjon av funksjon

Datatyper:
Sequence types vs.
non-sequence types

Sequence types:         str, tuple, list

Rekkefølgen på elementene er definert.
Støtter uthenting ved index, samt slicing (L[3], L[3:10]).

 

 

Non-sequence types:     dictionary, set

Ingen fast rekkefølge.

 

Begge gruppene er iterable, som gjør at man kan løpe gjennom alle elementene ved for-løkker

 

Hvor finner vi hjelp?
Gode dokumentasjonskilder

Python Standard Library:

https://docs.python.org/3.7/library/index.html

 

W3Schools - Python reference:

https://www.w3schools.com/python/python_reference.asp

 

Emnesidene for INGG1001 - Python:

http://folk.ntnu.no/sverrsti/INGG1001-H2019/python.html

 

Lærebok (p.t. ingen offisiell url)

INGG1001 Finale

By sverres

INGG1001 Finale

  • 463