Python (programski jezik)

Iz Wikipedije, proste enciklopedije
(Preusmerjeno s strani Python)
Skoči na: navigacija, iskanje
Python
Python logo and wordmark.svg
Začetna izdaja 20. februar 1991[1]
Oblikoval Guido van Rossum[d]
Razvijalec Guido van Rossum[d][1] in Python Software Foundation[d]
Stabilna izdaja 2.7.14[2] in 3.6.5[3]
Tipizacija dinamično, močno, varno
Večje implementacije CPython, IronPython, Jython, Python for S60, PyPy
Dialekti Cython[d] in Stackless Python[d]
Vplivi ALGOL 68[d][4], ABC[d][5], Modula-3[d][6], C[7], C++[6], Perl, Java, Lisp in Haskell[8]
Vplival na Boo, Cobra, D, Falcon, Groovy, JavaScript, Ruby
OS večplatformsko[d][9]
Licenca Python Software Foundation License[d][1]
Običajna končnica datoteke py, pyc, pyd, pyo in pyw
Spletna stran https://www.python.org/
Wikibooks logo Python Programming na Wikibooks

Python je tolmačitveni 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 ima popolnoma dinamične podatkovne tipe, samodejno upravlja s pomnilnikom in podpira funkcionalno, imperativno oziroma proceduralno, strukturirano in objektno orientirano računalniško programsko paradigmo. Zaradi dinamičnih podatkovnih tipov je podoben jezikom Perl, Ruby, Scheme, Smalltalk in Tcl. Razvili so ga kot odprtokodni projekt, ki ga je upravljala neprofitna organizacija Python Software Foundation. Python se v glavnem uporablja za računalniško analitiko in razvijanje internetnih aplikacij.

Python uporablja različna orodja za različne tipe razvijanja aplikacij, za Grafični Uporabniški Umesnik oziroma GUI ima vsaj tri različna orodja, ta orodja med najbolj pogostimi so Kivy, PyQt, PySide, Pygame, PyForms, tkInter. Python ima tudi orodja za razvijanje internetnih aplikacij med najbolj pogosto uporabljena sodijo Django, ki ima svojo posebno knjižnico in deluje večinoma v relaciji z podatkovno bazo, Bottle, Flask, Tornado (Orodje), web2py in Jade. Večina teh orodji je že nameščena ,če uporabnik uporablja Integrirano Razvijalsko Okolje oziroma IDE. Python pa ima tudi orodja za analitiko in razvijalce programske opreme. Med najpogostege uporabljena orodja za analitiko spadajo SciPy, Pandas in IPython. Za razvijanje programske opreme pa se uporabljajo predvsem nasljedna orodja (Buildbot, Trac in Roundup. Uporabljajo se tudi orodja za skrbništvo sistema kot na primer Ansible, Salt in OpenStack.

Osnovna Sintaksa[uredi | uredi kodo]

Komentarji

# To je komentar

Komentar vedno sestoji za znakom #. Komentar ne more biti napisan tam kjer se definira funkcija oz. vstavlje modula. Komentar je vedno ignoriran.

Program "Pozrdavljen svet"

print "Pozdravljen svet" # Konzola izpiše Pozravljen svet


Tipi spremenljivk

var1 = 100    # var1 je dobil vrednost 100 in postal intiger.
var2 = 123.456    # var2 je dobil vrednost 123.456 in postal float.
var3 = "Živjo"    # var3 je dobil vrednost "Živjo" in postal string.
print(var1)
print(var2)
print(var3)
type(var1)
type(var2)
type(var3)

#--- Izhod ---#
100
123.456
"Živjo"
<type 'int'>
<type 'float'>
<type 'str'>

Standardni podatkovni tipi

  • Števlike = intigers
  • Nizi = strings
  • Seznami = lists
  • Slovarji = dictionaries

Izjava "del"

var1 = 66    # var1 je dobil vrednost 66 in postal intiger
del var1    # var1 je izbrisan
print(var1)

# Izhod
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    print(var1)
NameError: name 'var1' is not defined

Arimetični in primerljivi operatorji[uredi | uredi kodo]

Arimetično

  • Seštevanje: +
  • Odštevanje: -
  • Množenje: *
  • Natančno deljenje: /
  • Nenatačno deljenje (vrne samo številko brez decimalk): //
  • Modulus:  %
  • Potenciranje: **

Primerljivo

  • Je enako: ==
  • Ni enako:  !=
  • Večje od: >
  • Manjše od: <
  • Večje ali je enako od: >=
  • Manjše ali je enako od: <=

Zanke

  • while zanka: ponovi izjavo oz. več izjav(če definirano) dano pod pogojem True.
  • for zanka: ponovi določeno zaporedje ali izpostavi spremenljivko ,ki upravlja kodo.
  • nested zanke: zanka v zanki

Kontrolirane izjave zank

  • break: uniči izjavo zanke in prenese izhod do naslednje izjave
  • continue: preskoči break
  • pass: ne naredi nič

Funkcije[uredi | uredi kodo]

Primer funkcije za "Pozdrav"

def pozdravi(ime):
        print("Pozravljen " + ime)
pozdravi("Nejc") # Nejc je nov objekt ki ga kličemo na parameter funkcije pozdravi.

# Izhod
"Pozdravljen Nejc"

Funkcija za vnos imena

import random
def vnesi_ime():    # def izjava definira funkcijo
        x = random.randint(555,666)
        print("Dobrodošla stranka %s"%x)   # formatiranje string tipa %s za string, intiger in %d za float. 
        # novo formatiranje se izvaja v '{}'.format(izraz). 
        ime = raw_input("Vnesi svoje ime: ")    # raw_input se uporablja za vnos podatkovnega tipa string ali pa intiger.
        if ime == "" or " ":    # zanka if 
              print("To polje je obvezno")
        elif ime == "Janez":    # zanka elif 
              print('Živjo Janez')   
        else:    # zanka else
              print("Živjo " + ime) # Konkatinacija objekta in podatkovnega tipe string
vnesi_ime() 

#--- Izhod ---#
"Dobrodošla stranka 63"
"Vnesi svoje ime: " 
# Če vensemo ime tit:
"Živjo tit"

Funkcija search

import re

niz = "Mačke so pametnejše od psov"

matchObj = re.match( r'(.*) so (.*?) .*', niz, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "Ni zadetka!!"

Funkcija z metodo *args

def Štej(*args):
    for Številka, Vrednost in enumerate(args):
        print("{0}. {1}".format(Številka, Vrednost))

Štej("Maja", "Lara", "Tone", "Jakob", "Siri")

#--- Izhod ---#
1. Maja
2. Lara
3. Tone
4. Jakob
5. Siri

Razredi[uredi | uredi kodo]

Primer razreda za vnos podatkov v tip slovarja

class Vozilo:   # definiraj razred vozilo
    ime = ""    # spremenljivka klase velja za cel razred
    vrsta = "avto"
    barva = ""
    cena = 100.00
    def opis(self):    # funkcija opis izpiše opis vnesenega slovarja avto1
        opis_str = "%s je %s, %s barve in njegova vrednost pa je $%.2f." % (self.ime, self.vrsta, self.barva, self.cena)
        return opis_str
avto1 = Vozilo()
avto1.ime = "Ferrari"
avto1.vrsta = "športni avto"
avto1.barva = "zelena"
avto1.value = 1000000.00

avto2 = Vozilo()    # Vnašanje podatkov tip slovarja
avto2.ime = "Fiat"    
avto2.vrsta = "avtodom"
avto2.barva = "bela"
avto2.value = 123456.00

# Testiranje
print(avto1.opis())    # vrne prejšne definirani opis v razredu vozilo
print(avto2.ime + " " + "je " + avto2.barva + " barve")    # Oblikovana poved

# Izhod
"Ferrari je športni avto zelene barve in njegova vrednost pa je 1000000.00"
"Fiat je bele barve"
class Oseba:
      def __init__(self):
          D = []

      def Uprašaj(self):
          Q = int(input("Katera je tvoja najljubša številka?: "))
          if Q <= 5:
             D.append(Q)
          elif Q > 5:
             print("Moja tudi!")
          else:
             print("Odlično")

x = Oseba()
x.Uprašaj()

Podatkovna baza[uredi | uredi kodo]

Primer povezave

import MySQLdb
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )    # odpri povezavo z bazo

cursor = db.cursor()    # pripravi objekt miške z metodo miške

sql = """INSERT INTO EMPLOYEE(ime, # vnos podatkov v bazo
         priimek, starost, spol, prihodek)
         VALUES ('Tit', 'Poplatnik', 14, 'M', 3482€)"""
try:
   cursor.execute(sql)    # izvedi sql ukaz
   # Commit your changes in the database
   db.commit()
except:
   db.rollback()    # pojdi nazaj v primeru napake

db.close()    # odjava iz baze

Pošiljanje sporočil preko elektronske pošte

import smtplib
import base64

ime_datoteke = "/tmp/test.txt"
fo = open(filename, "rb")
vsebina = fo.read()
enkodirana_vsebina = base64.b64encode(vsebina)  # base64

pošiljatelj = 'nekdo.primer@gmail.com'
dobitnik = 'nekdo_drugi@outlook.com'

označevalnik = "AUNIQUEMARKER"

telo ="""
To je test. Za wikipedio.
Tit Poplatnik.
"""
# Definiraj glavno glavo
del1 = """Od: Od Osebe <me@fromdomain.net>
Za: Za Osebo <amrood.admin@gmail.com>
Subjekt: Pošiljam pripono
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (označevalnik, označevalnik)

del2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (telo,označevalnik)

# pripone
del3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(ime_datoteke, ime_datoteke, enkodirana_vsebina, )
sporočilo = del1 + del2 + del3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(pošiljatelj, dobitnik, sporočilo)
   print "Sporočilo je uspešno poslano."
except Exception:
   print "Error: Sporočila ni mogoče poslati."

Zunanje povezave[uredi | uredi kodo]

Sklici[uredi | uredi kodo]