Python 3/Tulostus standarditulostukseen

Wikikirjastosta
Siirry navigaatioon Siirry hakuun


Komentoriviohjelman normaalitulostus kirjoitetaan standarditulostukseen (stdout) ja virhetilanteista aiheutuvat virheilmoitukset tulostetaan hyvän tavan mukaan standardivirheeseen (stderr). Syöte luetaan standardisyötteestä (stdin). Syötelähteitä ja tulostuskohteita voi olla muitakin, mutta nämä kolme avataan automaattisesti kaikkiin ohjelmiin.

Standarditulostukseen tulostetaan Pythonissa print-funktiolla.

Toisin kuin Python 2:ssa, Python3:ssa print on funktio eikä sisäänrakennettu komento. Siten se tarvitsee aina sulut parametrien ympärille.

print("Hello world!")

Print-funktiolle voi antaa useita parametreja, jotka voivat olla muunkin tyyppisiä kuin merkkijonoja. Print-funktio muuttaa ne automaattisesti merkkijonoksi. Minkä tahansa itse tehdyn luokan saa muuttumaan automaattisesti merkkijonoksi toteuttamalla sille __str__- tai __repr__-metodin.

>>> totuus = False
>>> luku = 3
>>> lista = [1, 2, 3]
>>> print("Arvot ovat", totuus, luku, lista)
Arvot ovat False 3 [1, 2, 3]

Parametrien tulostuksen väliin lisätään oletuksena yksi välilyönti. Kaikkien tulostettavien perään lisätään oletuksena rivinvaihto. Väleihin tulostettavan tekstin voi vaihtaa antamalla nimetyn parametrin sep. (Merkintä ”\t” on tässä sarkainmerkin erikoismerkintä. Näitä merkkejä käsiteltiin merkkijonojen yhteydessä.)

>>> tulos1 = 3
>>> tulos2 = 5
>>> tulos3 = 7
>>> print("Tulokset ovat:", tulos1, tulos2, tulos3, sep='\t')
Tulokset ovat:	3	5	7

Loppuun tulostettavan tekstin voi vaihtaa antamalla nimetyn parametrin end.

print("Tulokset ovat ", end='\t')
print(tulos1, end='\t')
print(tulos2, end='\t')
print(tulos3)
Tulokset ovat:	3	5	7

Merkkijonot voi luonnollisesti myös yhdistää muulla tavoin ennen print-funktiolle antamista.

>>> print("Tulokset ovat: " + tulos1 + ", " + tulos2 + " ja " + tulos3)
Tulokset ovat: 3, 5, 7
>>> print("Tulokset ovat: %d, %d ja %d" % (tulos1, tulos2, tulos3))
Tulokset ovat: 3, 5, 7
>>> print(f"Tulokset ovat: {tulos1}, {tulos2} ja {tulos3})
Tulokset ovat: 3, 5, 7

Nimetyllä parametrilla file voi vaihtaa tulostuskohteen (tai tiedoston). Esimerkiksi standardivirheeseen voi tulostaa antamalla file-parametriksi sys.stderr.

>>> import sys
>>> print("Lupa evätty!", file=sys.stderr)

Yleiskäyttöoinen funktio, jota voi käyttää virheiden tulostukseen samaan tapaan kuin print-funktiota. *args- ja **kwargs-parametreja käsitellään funktioiden yhteydessä.

def print_err(*args, **kwargs):
    print(*args, file=sys.stderr, **kwargs)