Siirry sisältöön

Python 3/Moduuli

Wikikirjastosta


1. haetaan
import math


2. käytetään
print (math.sqrt(10)) # 3.16227766017

Tässä haettiin math-moduuli import-komennolla. Math-moduuli on tavallinen Python-tiedosto, jossa on luokka nimeltä sqrt, johon luku 10 lähetetään ja josta luku palautuu käsiteltynä. Omia moduuleja voi tehdä ja niillä ohjelma jakautuu useisiin tiedostoihin, ohjelmistoksi. Pythonin peruskirjasto on laaja ja sisältää moduuleja perushommiin.

tiedosto custom_module.py, jossa on luokka.

class Replacer:
    def __init__(self):
        pass # passataan

    def change(self, string):
        string = string.replace('Hello', 'Good morning')
        return string

Muuttaa merkkijonon "Hello, world" muotoon "Good morning, world!".

Kutsutaan pääohjelmassa

[muokkaa | muokkaa wikitekstiä]

1. haetaan

import custom_module # Muista välin tilalle alaviiva!

2. kutsutaan

2.1

print (custom_module.Replacer().change('Hello, world!')) # moduulin_nimi.Luokka().funktio()

2.2

replacer = custom_module.Replacer() # moduulin_nimi.Luokka()
print (Replacer.change('Hello, world!')) # ylla_oleva.funktio()

print-komento on näissä, koska change-funktion palauttama merkkijono halutaan tulostaa.

Moduulin ohjeteksti kirjoitetaan tiedoston alkuun.

"""Hyödyllisiä luokkia ja funktioita.
"""

class Replacer:
    def __init__(self):
        pass # passataan

Muita tapoja hakea moduuli

[muokkaa | muokkaa wikitekstiä]
import math as MATH # vaihdetaan nimeä
from math import sqrt # haetaan yksi jäsen
from math import sin, cos # haetaan useita jäseniä
from math import * # haetaan kaikki luokat
from math import sin as SIN # muutetaan haetun funktion nimeä

Absoluuttiset ja suhteelliset polut

[muokkaa | muokkaa wikitekstiä]

Projektin moduuleihin voi viitata absoluuttisella tai suhteellisella polulla. Absoluuttisessa viittaustavassa moduuleihin viitataan projektin juurihakemistosta alkaen.

import omapackage.omamooduuli         # omamoduuli on tiedostossa <projektin juuri>/omapackage/omamoduuli.py

Ylimmän tason moduulin edessä voi käyttää yhtä pisteitä viittaamaan ylähakemistoihin. Yksi piste tarkoittaa samaa hakemistoa, kaksi pistettä ylempää hakemistoa, kolme pistettä kahta ylempää hakemistoa ja niin edelleen.

import .omamoduuli         # omamoduuli on tiedostossa ./omamoduuli.py
import ..omamoduuli        # omamoduuli on tiedostossa ../omamoduuli.py
import ...omamoduuli       # omamoduuli on tiedostossa ../../omamoduuli.py

Moduulien hakupolut

[muokkaa | muokkaa wikitekstiä]

Luettelosta sys.path näkee myös kaikki polut, joista moduuleita ja pakkauksia haetaan.

>>> import sys
>>> sys.path
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/xxx/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

Uusia hakupolkuja voi lisätä ohjelman sisällä lisämällä niitä tähän listaan ennen import-lauseita.

sys.path.append("/home/xxx/python/omat_kirjastot")

Ylimääräisiä polkuja voi lisätä myös ympäristömuuttujaan PYTHONPATH. Jos polkuja on useita, ne erotellaan kaksoispisteellä (:).

$ PYTHONPATH=/home/xxx/python/omat_kirjastot:/home/xxx/python/Mönkkösen_kirjastot

Lisäys olemassa olevien perään.

$ PYTHONPATH=${PYTHONPATH}:/home/xxx/python/omat_kirjastot

Moduulin jäsenet voi listata komentotulkissa dir-funktiolla.

>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Moduulin tai sen jäsenen ohjetekstin saa näkyviin help-funktiolla.

>>> help(math.log)

Tulostaa

Help on built-in function log in module math:

log(...)
    log(x, [base=math.e])
    Return the logarithm of x to the given base.
    
    If the base not specified, returns the natural logarithm (base e) of x.

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]