Python 3/Moduuli
- 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.
Oma moduuli
[muokkaa | muokkaa wikitekstiä]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
Muuta
[muokkaa | muokkaa wikitekstiä]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ä]- Python-kielisen_ohjelmoinnin_perusteet (Wikiopiston opintopiirin opiskeluohjeita)
Johdanto: | |
---|---|
Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
Ohjausrakenteet | |
Muut kielen rakenteet: |
Moduuli - Luokka - Funktio - Virheidenhallinta - Tiedosto |
Graafinen käyttöliittymä: | |
Harjoitustehtäviä: | |
Lisätiedot ja lähteet: |