Python (programski jezik)

Python je interpretni visokoravni večnamenski programski jezik, ki ga je ustvaril Guido van Rossum leta 1990. Jezik je dobil ime po priljubljeni angleški televizijski nanizanki Leteči cirkus Montyja Pythona (Monthy Python's Flying Circus). Python podpira dinamične podatkovne tipe, kar ga naredi drugačnega od npr. Jave ali družine C. Zaradi dinamičnih podatkovnih tipov je podoben jezikom Perl, Ruby, Scheme, Smalltalk in Tcl. Upravlja s pomnilnikom in podpira funkcionalen, imperativen oziroma proceduralen, strukturiran in objektno orientiran programski stil. Razvili so ga kot odprtokodni projekt, ki ga je upravljala neprofitna organizacija Python Software Foundation. Python se uporablja za obdelavo podatkov in predvidevanje le-teh. Zaradi prilagodljivosti jezika ima močne temelje za vzpostavitev umetnih inteligenc. Uporabljajo ga NASA,[14] Pixar, Google, Facebook,[15] YouTube[16] in mnoge druge organizacije.

Python
Python logo and wordmark.svg
Začetna izdaja20. februar 1991[1]
OblikovalGuido van Rossum[d][2]
RazvijalecPython Software Foundation[d] in Guido van Rossum[d][2]
Stabilna izdaja3.9.0[3][4][5] in 3.10.0.a1[3]
Tipizacijadinamično, močno, varno
Večje implementacijeCPython, IronPython, Jython, Python for S60, PyPy
VpliviALGOL 68[d][6], ABC[d][7], Modula-3[d][8], C[9], C++[8], Perl, Java, Lisp, Haskell[10], APL[d], CLU[d], Dylan[d], Icon[d] in Standard ML[d]
Vplival naBoo, Cobra, D, Falcon, Groovy, JavaScript, Ruby
OSvečplatformsko[d][11]
LicencaPython Software Foundation License[d][2]
Običajna končnica datotekepy, pyc, pyd[12], pyo, pyw in pyz
Spletna stranhttps://www.python.org/[13]
Wikibooks logo Python Programming na Wikibooks

Pogosto uporabljene knjižniceUredi

Python ima že ob namestitvi nekaj knjižnic oz. modulov. To so skupki programske kode, najpogosteje funkcij, ki jih nato pisci kode uporabijo v svojih programih. Nekaj izmed teh je napisanih v jeziku C[17] za doseganje optimalnih časov pri klicanju in izvedbi funkcij. Navkljub dejstvu, da je Python večplatformski, standardni nabor knjižnic ni enak na Linuxu[18] ali Windowsu[19]. Najpogosteje uporabljene knjižnice so math, podpora matematičnih funkcij, sys, za uporabo sistemskih funkcij in os, za nadziranje funkcij operacijskega sistema.

Uporaba in namembnost Pythona v aplikacijahUredi

Python uporablja različna orodja za različne tipe aplikacij, saj vsebuje tako orodja za pripravo grafike kot matematični modul za izračunavanje... Med grafično orientiranimi moduli so najbolj pogosti tkinter, ki je tudi del standardnega nabora. Poznamo tudi PyQt5[20] za naravni izgled oken na Windowsih ter Kivy, posebej prilagojen za grafiko na telefonih sistema IOs in Android.

Ima tudi orodja za razvijanje internetnih aplikacij, med najbolj pogosto uporabljena spadajo Django, ki ima svojo posebno knjižnico in deluje večinoma v relaciji s podatkovno bazo, Bottle, Flask, Tornado (orodje), web2py in Jade. Večina teh orodij mora uporabnik naložiti s spleta[21] v intergrirano razvijalno okolje (Intergrated development enviroment, IDE). Zaradi preprostosti Pythona ga včasih uporabljajo za statistično-napovedovalne modele in programe, kot alternativo jeziku R. Med najpogosteje uporabljena analitična orodja spadajo SciPy, Pandas in Numpy. Večina analitičnih orodji je programiranih v jeziku C za optimalno delovanje in večplatformnega delovanja. Za razvijanje programske opreme pa se uporabljajo predvsem naslednja orodja: Buildbot, Trac in Roundup. Uporabljajo se tudi orodja za administracijo sistema, kot na primer: Ansible, Salt in OpenStack. Le-ti sistemi pa uporabljajo način MLA (multi language architecture, večjezična programska arhitektura), najdemo ga tudi v spletnih straneh[22].

Program 'Pozdravljen svet'Uredi

Python je značilen po preprostosti napisane kode, zato je eden izmed najbolj priljubljenih jezikov v zadnjem času[23] ter pri otrocih. Program je skoraj enak spisku navodil, ki ga programerji pogosto naredijo med razmišljanjem o problemu. V pythonu se tip niz (string) označuje z "", ki je v spodaj podanem primeru prvi parameter funkcije[24] print, ki se uporablja za izpis podatkov. V pythonu obstajata dva tipa komentarjev: #, ki se uporablja za enovrstične komentarje in """ """ docstring ali večvrstični komentar. Obe vrsti komentarjev sta ignorirani med izvajanjem programa.

#To bo izpisalo 'Pozdravljen svet', a ta vrstica bo ignorirana
print('Pozdravljen svet')

SpremenljivkeUredi

Spremenljivke se definirajo tako da jih poimenujemo in jim dodelimo vrednost. V nasprotju z drugimi jeziki, se spremenljivke same prilagodijo pravemu podatkovnemu tipu. Vse spremenljivke spodaj spadajo pod primitivne podatkovne tipe. Za preverbo podatkovnega tipa uporabimo funkcijo type(object)(parameter object je podana spremenljivka).

pozdrav = "Živjo"   # niz (string)
denar = 100         # celo število (integer)
povprečje = 12.699  # decimalno število (float)
jeVesel = True      # boolean (True ali False)
komplekso_stevilo = 2+5j       # kompleksno število (complex)
nic = None # ničelni podatkovni tip (NoneType) ta podatkovni tip je poseben saj nima dejanske vrednosti.
type(pozdrav) #ali katerokoli drugo že definirano spremenljivko

Vsaka spremenljivka ima svoje posebnosti zaradi različnih napak v strukturi Pythona samega. Z spremenljivkami lahko tudi upravljamo tipe po lastnostih. Na primer:

x = "Danes je oblačno"
print(x[3]) # izpiše črko "e" saj Python začne vedno šteti z 0.
print(x[5:]) # izpiše " je oblačno" saj izreže vse pred 5 (šteje se tudi presledek)
print(x[:4]) # izpiše "oblačno" saj izreže vse po 4.
print(len(x)) # izpiše dolžino besede shranjene v spremenljivki x. Izpiše '16'.
print(x[:-3]) # izpiše "a" saj kadar uporabimo znak minus (-), začne šteti od desne proti levi.

Konkatinacija in formatiranje niznega (string) tipaUredi

Konkatinacija se uporablja kadar moramo združiti več manjših niznih (string) objektov v končni izpis. Pri tem se uporablja operator +. Če hočemo konkatinirati druge podatkovne tipe jih moramo najprej prevesti v niz (string).

x = "Pozdravljen"
y = "svet"
print(x + " " + y)

# izpis konzole
Pozdravljen svet

# primer prevoda podatkovnega tipa
jeŽalosten = False
kolikoLet = 100000

jeŽalosten = str(jeŽalosten)
kolikoLet = str(kolikoLet)

print("Ali si žalosten: " + jeŽalosten)
print("Koliko let imaš: " + kolikoLet)

# izpis konzole
Ali si žalosten: False
Koliko let imaš: 100000

Pri formatiranju se lahko uporabi kateri koli tip. Zato je formatiranje večkrat uporabljeno.

x = 5
y = "Jure"
k = "Nina"
e = 2+3j

# prvi primer
print(y + " je vesel, saj je dobil oceno {}".format(x))

# ali pa uporabimo znak %
print(y + " je vesel, saj je dobil oceno %d"%x)

# drugi primer
print("{0} in {1} sta skupaj rešila enačbo {2}".format(y, k, e))
# V tem primeru funkcija 'format' spremeni vrednost vseh y, k, e vrednosti v niz. Vpiše jih v glavni niz objekt po vrsti z začetkom od 0 do 2

# tretji primer
print(f"{y} + {k} = {x} + {e}")
# Tukaj je posebna vrsta niza, ki omogoča formatiranje niza med dejanskim nizom. Gre za novejši način.

Matematični operatorjiUredi

Matematika v pythonu je zelo podobna navadni matematiki. Pozna 6 osnovnih operacij. Množenje in deljenje imata prednost pred odštevanjem in seštevanjem, prav tako se prvo izvede operacija v oklepajih.

# Osnovne operacije
x + y  # seštevanje
x - y  # odštevanje 
x * y  # množenje
x / y  # deljenje (zaokroženo na najbližjo celoštevilsko vrednost)
x // y # deljenje
x ** y # potenciranje (produkt x-ov y-krat)
x % y  # modulo (ostanek pri deljenju)

# Hitre operacije
x += y # dodelitev seštevka (ekvivalent x = x + y)
x -= y # dodelitev odštevka (ekvivalent x = x - y)
x *= y # dodelitev zmnožka (ekvivalent x = x * y)
x /= y # dodelitev količnika zaokroženega na najbližjo celoštevilsko vrednost (ekvivalent x = x / y)
x //= y # dodelitev količnika (ekvivalent x = x // y)
x **= y # dodelitev produkta x-ov y-krat (ekvivalent x = x ** y)
x %= y # dodelitev ostanka pri deljenju (ekvivalent x = x % y)

# Vse račune lahko shranjujemo v spremenljivke
a = 2 + 5 # shrani rezultat računa v spremenljivko a
print(x) # izpiše vrednost a
print(3 + 7 * 2) # Izpiše 17, ker ima množenje prednost
print((5 - 7) * 4) # Izpiše -8, ker ima operacija v oklepaju prednost

Vredno je tudi omeniti matematično modulo math v kateri najdemo manj elementarna matematična orodja.

import math
print(math.sin(45)) # Izpiše 0.707...
print(math.abs(-7)) # Izpiše 7

# Python ima vgrajene nekatere matematične funkcije
print(pow(3, 2)) # Izpiše 9 saj je to ekvivalentno 3 ** 2
print(sum([1, 2, 3])) # Izpiše 6 saj funkcija sum() sešteje vse int v kolektivnem podatkovnem tipu list

Python konzola ima vgrajeno računalo tako da ni potrebno uporabljati funkcije print, z izjemo če razvijamo v IDE.

Logični operatorjiUredi

V python-u poznamo 5 osnovnih logičnih operatorjev. Logični operatorji vedno vrnejo vrednost True ali False.

4 < 2 # manjše od
3 > 2 # večje od
6 <= 0 # manjše ali enako od
3 >= 1 # večje ali enako od
8 == 3 # enako
7 != 5 # ni enako

# spet se lahko vse shranjuje v spremenljivke
x = 3 < 4
print(x)
# izpiše True, saj je 3 manjše od 4

Če hočemo primerjati vrednosti z različnimi željami moramo uporabiti posebne izjave s ključnimi besedami 'and', 'or', 'not' in 'is'.

and # pri katerem morajo za skupno vrednost True vse vrednosti vrniti True, sicer vrne False.
or  # pri katerem mora vsaj ena od vrednosti vrniti True da skupno velja tudi True, drugače False.
not # not True vrne False, medtem ko not False vrne True. Podobno operatorju != vendar se uporablja za primerjavo med neprimitivnimi podatkovnimi tipi.
is  # podobno operatorju == vendar se uporablja za primerjavo med neprimitivnimi podatkovnimi tipi.
3 < 4 and 2 > 1
# izpis 
True # saj sta obe vrednosti pravilni

3 > 2 or 6 < 2 # saj je ena od vrednosti pravilna
True

3 == 3 and not 2 >= 9 
True # saj je pred desno vrednostjo not

""" Vse to se lahko shrani v spremenljivke """

Kolektivni podatkovni tipiUredi

Python pozna nekaj kolektivnih podatkovnih tipov. Te tipi vsebujejo več podatko za razliko od spremenljivk. Poznamo list, tuple, dict, set in frozenset.

znamke = ["Ferrari", "BMW", "Honda", "Alfa"] # to je list z 4 vrednostmi enakega tipa podatkov
vse = (0, "Vito", 44, True, None, "Živjo", 2.44) # to je tuple, ki lahko vsebuje katerikoli tip podatka
tabela_ocen = {"Miha":4, "Jure":2, "Jaz":5, "Nekdo":1, "Maja":4, "Nina":3} """ to je dictionary vsebuje key and value. Key so v tem primeru imena, vsako ima svojo oceno torej value. Torej tuple ima key=string in value=intiger podatke."""

# vse podatke lahko izpišemo s print funkcijo
print(znamke)
print(vse)
print(tabela_ocen)
print(type(znamke))
print(type(vse))
print(type(tabela_ocen))

# izpis konzole
['Ferrari', 'BMW', 'Honda', 'Alfa']
(0, 'Vito', 44, True, None, 'Živjo', 2.44)
{'Miha':4, 'Jure':2, 'Jaz':5, 'Nekdo':1, 'Maja':4, 'Nina':3}

<type 'list'>
<type 'tuple'>
<type 'dict'>

Urejanje kolektivnih podatkovnih tipov

Če hočemo dobiti določen podatek v nekem kolektivnem podatkovnem tipu naredimo to:

x = ["A", "B", "C", "D"]
print(x[2])
# konzola izpiše C saj se list začne šteti z 0

# da dodamo vrednost listu uporabimo metodo append
x.append("E") # to doda x listu na konec vrednost "E"

# da odstranimo vrednost listu uporabimo metodo pop
x.pop(1) # izbriše drugo vrednost na listu v tem primeru "B"
print(x)

# konzola izpiše 
['A', 'C', 'D', 'E']

# če nevemo katero število pripada določeni vrednosti na listu uporabimo metodo count
št_a = x.count("A")
print(št_a) # izpiše 0 saj je a na prvem mestu.

# Kolektivne podatkovne tipe je mogoče tudi gnezditi.
j = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
# Spremenljivka je list listov torej če uporabimo enonivojsko klicanje podatkov preko [] operatorja
print(j[0]) # Izpiše [1, 2, 3]
# Do dostopamo do notranje vsebine recimo števila 5
print(j[1][1]) # Izpiše 5

Za vsak kolektivni podatek obstaja vsaj 5 metod.

VnosUredi

Vnos se izraža z 2 built-in keyword-oma input in raw_input. Če uporabimo raw_input potem se vsak naš vnos šteje kot niz, če pa uporabljamo input moramo pred njega vstaviti tip podatka katerega hočemo pridobiti na primer: int(input("Vnesi število: ")), za vnos števila. raw_input ni več v uporabi od python verzije 3.6.x

# primer raw_input keyworda
x = raw_input("Vnesi svoje ime: ")
print("Pozdravljen " + x + "!")
print("Dolžina tvojega imena je {}".format(len(x)))  # len() keyword se uporablja pri ugotavljanju dolžine določene besede

# primer input keyworda
y = str(input("Vnesi svoje ime: ")) # Ekvivalent starejši raw_input
k = int(input("Vnesi svojo starost: "))

print("Tvoje ime je " + y)
print("Star si {}".format(k)) # intiger tipe vedno formatiramo saj se jih ne more konkatinirati s string, razen v primeru prevoda podatkovnega tipa.

Pogojni stavki in gnezdene zankeUredi

Pogojni stavki se uporabljajo predvsem za zastavljanje pogojev skozi katere mora neka vrednost priti, da se nekaj izvaja. Izraža se jih s ključnimi besedami if, elif in else. Gnezdena zanka pomeni praktično zanka v zanki oziroma več pogojev v pogoju.

# primer if-elif-else stavka
barva = str(input("Vnesi svojo najljubšo barvo: "))
if barva == "rdeča" or barva == "modra":
   print("Zelo lepo")
elif barva == "zelena" or barva == "rumena":
   print("Lepo")
elif barva == "črna" or barva == "bela" or barva == "roza":
   print("Ne najbolje")
elif barva == "rjava" or barva == "oranžna" or barva == "lila":
   print("Slaba izbira")
else:
   print("Ne poznam te barve")

# primer if-else stavka
s = int(input("Prosim vnesi svojo starost: "))
if s < 18:
   print("Dostop ni dovoljen.")
else:
   print("Dobrodošli")

# matematični primer 
if 9 + 1 == 10:
   print("Pravilno")
elif 9 + 1 != 10:
   print("Narobe")
# primer nested stavka
c = str(input("Vnesi črko: "))
k = int(input("Vnesi številko: "))
if c in ['A','B','C','D','E','F']:
   if k > 50:
      print("Uspešno")
   elif k <= 40:
      print("Skoraj uspešno")
   else:
      print("Ni uspešno")
elif c in ['K','L','M','N','O']:
   print("Bravo zmagal si")
elif len(c) < 1 and len(c) > 1:
   print("Moraš vpisati samo eno črko")
else:
   print("Napaka")

Ponavljajočise stavkiUredi

Stavek for se uporablja da se izbere vse člane nekega kolektivnega podatkovnega tipa. Stavek while pa se uporablja kot pogoj dokler nekaj ne naredi uporabnik do takrat se bo while stavek izvajal.

# primer for stavka
pozdravi = ['Živjo', 'Zdravo', 'Pozdravljeni']
for x in pozdravi:
    print(x)

# ali pa
for i, x in enumerate(pozdravi):
    print(i, x) 
# Vrednost i in x sta razpakirana iz enumerate(pozdravi).

# izpis konzole 
Živjo
Zdravo
Pozdravljeni

0, Živjo
1, Zdravo
2, Pozdravljeni

# primer while stavlka
p = "12345"
while True:
   r = str(input("Vnesi geslo: "))
   if r != p:
      print("Napačno Geslo")
   elif r == p:
      print("Dobrodošli")

# izpis konzole
Vnesi geslo: 54321
Napačno Geslo
Vnesi geslo: 12345
Dobrodošli

ModuleUredi

Vsak dokument z oznako .py ipd... in se shrani na lokalni napravi kot python modula katero lahko dodamo v kodo če uporabimo izjavo import.

Pozdravi.py

# sedaj pišem v Pozdravi.py datoteko
def RečiŽivjo(ime):
    print("Živjo "+ime)

Glavni.py

# sedaj pišem v Glavni.py
import Pozdravi
# ali pa
from Pozdravi import RečiŽivjo
x = "Anastazija", "Špela", "Marija"
for w in x:
    RečiŽivjo(w)

# izpis konzole
Živjo Anastazija
Živjo Špela
Živjo Marija

FunkcijeUredi

Funkcije se uporablja zato da, avtomatiziramo kodo in jo lažje beremo. Funkcije lahko vrnejo določeno vrednost ali pa se samo uporabijo, imajo parametre, če se definirane v razredu se imenujejo metode. Vedno jih začnemo s keyword def, razen v primeru neznane funkcije lambda.

def Seštej(x, y):
    print("Rezultat = {}".format(x + y))

Seštej(2, 4) # klic funkctije 
# izpis
6

# Funkcija Seštej je ubistvu tako miniaturna, da jo lahko zapišemo kot lambdo
Seštej = lambda x, y: x + y
print(Seštej(2, 4)) # Izpiše 6
# primer funkcije brez parametrov
def ZahtevajVpis():
    uporabniško_ime = str(input("Vnesi uporabniško ime: "))
    geslo = raw_input("Vnesi geslo: ")
    if len(geslo) < 6:
       print("Geslo more vsebovati več kot 6 znakov")
    else:
       print("Dobrodošel uporabnik {}".format(uporabniško_ime))

# primer funkcije z definiranimi parametri
def Odštej3in4(x=3, y=4)
    r = x - y
    print(r)

Odštej3in4()

# izpis konzole 
-1

Funkcijo lahko pokličemo tudi v drugi funkciji saj so vse funkcije globalne. Z izjemo metod definiranih v UDR.

def Pozdravi(ime):
    print("Živjo "+ime)

def Vprašanje():
    i = raw_input("Vnesi ime: ")
    Pozdravi(i)     

Vprašanje()
# izpis konzole 
Vnesi ime: Nekdo
Živjo Nekdo

Funkcija ima lahko tudi definirane tipe podatkov parametrov.

def Odštej(a:int, b:int):
    print("{}".format(a + b))

def PrepoznajTip(t:(list, dict), p:bool = True)
    if p:
       if type(t) is type(list):
          print("Tip je list")
       elif type(t) is type(dict):
          print("Tip je dict")
       else:
          print("Tip ni prepoznan")

Primeri Funkcij

import time
def Štej(od, do, zamik=0.5):
    while od < do:
          od = od + 1 # ali pa z uporabo hitrega operatorja od += 1
          print(od)
          time.sleep(zamik) # ustavi izvajanje za zamik sekund

def Vnos():
    ime = str(input("Vnesi ime: "))
    priimek = str(input("Vnesi priimek: "))
    print("Pozdravljen "+ime+ " " +priimek)

# tukaj se uporablja ti. nested funkcije pri kateri je lahko funkcija v funkciji
def Kalkulator():
    def Seštej(x, y):
        return x + y

    def Odštej(x, y):
        return x - y

    def Množi(x, y):
        return x * y

    def Deli(x, y):
        return x / y

    def Potenciraj(x, y):
        return x ** y

    def Moduliraj(x, y):
        return x % y
    
    print("Izberi možnost")
    print("Seštevanje = 1")
    print("Odštevanje = 2")
    print("Množenje = 3")
    print("Deljenje = 4")
    print("Potenciranje = 5")
    print("Moduliranje = 6")
    o = str(input("Izbira: "))
    p = int(input("Prvi: ")
    d = int(input("Drugi: ")
    if o == "1":
       Seštej(p, d)
    elif o == "2":
       Odštej(p, d)
    elif o == "3":
       Množi(p, d)
    elif o == "4":
       Deli(p, d)
    elif o == "5":
       Potenciraj(p, d)
    elif o == "6":
       Moduliraj(p, d)
    else:
       print("Neznana operacija.")

Kalkulator()
# izpis konzole
Izberi možnost
Seštevanje = 1
Odštevanje = 2
Množenje = 3
Deljenje = 4
Potenciranje = 5
Moduliranje = 6
Izbira: 2  # jaz napisal 2
Prvi: 10
Drugi: 4

# izpis funkcije
6

RazrediUredi

Razredi lahko vsebujejo funkcije. Funkcije v razredu se imenujejo metode. Razrede se inicializira tako da dobimo novo instanco z __init__ predefinirano build-in funkcijo. Pod to globalno predifinicijo spadajo tudi __delattr__, __format__, __getattribute__, __hash__, __long__, __native__, __new__, __call__, __repr__, __nonzero__, __sizeof__, __setattr__, __unicode__, __str__ in drugi. Vsaka definicija od naštetih zgoraj ima svoj pomen.

# glavni razred
class A:
    def __init__(self): # klic konstruktorja
        print("Inicializeran razred A")

# podrazred
class Z(A):
    def __init__(self):
        super(Z, self).__init__(A)  # klic superkonstruktorja

class U(Z, A):
    def __init__(self, m1, m2):
        super(Z, U, A, self).__init__(m1, m2)  # klic superkonstruktorja s parametri

# primer nelogičnega oziroma nepravilnega razreda
class B:
    def __init__(self):
        pass

# novo definirane globalne spremenljivke v razedu B
B.ime = "Tone"
B.priimek = "Altgr"

r = B.ime # objekte in njihove člane lahko shranjujemo v spremenljivke
print(r)
        

# primer razreda za osebe
class Oseba:
    def __init__(self, ime:str, priimek:str, starost:int, email:str):
        self.ime = ime # če damo pred objek parameter self lahko dostopamo do njegovih atributov
        self.priimek = priimek
        self.starost = starost
        self.email = email

        podatki = [[], []] # multidimenzionali list
        podatki[0].append(ime)
        podatki[0].append(priimek)

        podatki[1].append(starost)
        podatki[1].append(email)

    def zahtevaj_podatke(self): # funkcija za klic izpisa podatkov na formatni način
        print("Ime: {}".format(self.ime))
        print("Priimek: {}".format(self.priimek))
        print("Starost: {}".format(self.starost))
        print("Email: {}".format(self.email)

    def zahtevaj_dimenzije(self):
        print(podatki)

Jaz = Oseba("Null", "PError", 15, "abc.PError@unknown.abc") 
# Jaz postane Object Oseba z določenimi člani npr. ime. ter metodami za interpretacijo objekta ali postaktivnost tega objekta oziroma njegovih članov.
Jaz.zahtevaj_podatke()

# izpis konzole 
Ime: Null
Priimek: PError
Starost: 15
Email: abc.PError@unknow.abc

# ali 
print(Jaz.ime) # . pomeni član nekega kolektiva v razredu.
print(Jaz.priimek)
print(Jaz.starost)
print(Jaz.email)

Zunanje povezaveUredi

SkliciUredi

  1. Historique et licence
  2. 2,0 2,1 2,2 https://docs.python.org/3/license.html
  3. 3,0 3,1 Python 3.9.0 is now available, and you can already test 3.10.0a1! — 2020.
  4. Python 3.9 released — 2020.
  5. Python 3.9 Released With Multi-Processing Improvements, New Parser — 2020.
  6. https://impythonist.wordpress.com/2014/02/16/open-heart-with-guido-van-rosuuma-lost-interview-of-python-creator-part2/
  7. Why was Python created in the first place?Python Software Foundation.
  8. 8,0 8,1 Classes The Python TutorialPython Software Foundation.
  9. An Introduction to Python for UNIX/C Programmers
  10. Functional Programming HOWTO
  11. https://www.python.org/downloads/
  12. https://docs.python.org/3/faq/windows.html#is-a-pyd-file-the-same-as-a-dll
  13. https://api.github.com/repos/python/cpython
  14. "How does NASA use Python? - Quora". www.quora.com. Pridobljeno dne 2020-08-21.
  15. "How is Python being used at Facebook? - Quora". www.quora.com. Pridobljeno dne 2020-08-21.
  16. "Developer's Guide: Python | YouTube". Google Developers (angleščina). Pridobljeno dne 2020-08-21.
  17. "The Python Standard Library — Python 3.8.5 documentation". docs.python.org. Pridobljeno dne 2020-08-22.
  18. "Unix Specific Services — Python 3.8.5 documentation". docs.python.org. Pridobljeno dne 2020-08-22.
  19. "winsound — Sound-playing interface for Windows — Python 3.8.5 documentation". docs.python.org. Pridobljeno dne 2020-08-22.
  20. Limited, Riverbank Computing, PyQt5: Python bindings for the Qt cross platform application toolkit, pridobljeno dne 2020-08-22
  21. "PyPI · The Python Package Index". PyPI (angleščina). Pridobljeno dne 2020-08-22.
  22. "php - Best practice multi language website". Stack Overflow. Pridobljeno dne 2020-08-22.
  23. "The Incredible Growth of Python | Stack Overflow". Stack Overflow Blog (angleščina). 2017-09-06. Pridobljeno dne 2020-08-22.
  24. "Python print()". www.programiz.com. Pridobljeno dne 2020-08-30.