Ugrás a fő tartalomra

Python tuple, .. oo, és modulok

A halmazok, listák, szótárak metódusai:

















Egy elemű tuple zárójel nélküli deklarációja: bar = 12 ,

szótárak - néha asszociatív tömböknek is nevezik őket - kulcsokkal indexelt, nem rendezett adategyüttesek.

Egy for ciklus definiál egy változót, ami egymás után fölveszi a bejárt szekvencia (lista, tuple) valamennyi értékét.
Az else klauzula kiértékelésére akkor kerül sor, ha a szekvencia elfogyott és nem volt break.


A range() függvény egy alsó és felső határok közé eső, egész számokból álló listát állít elő.
Ez a konstrukció akkor hasznos, amikor egy for ciklus egy egész számokból álló szekvenciát jár be.


Amíg ez a feltétel teljesül, addig a while hoz kapcsolt blokk utasításai értékelődnek ki.
Az else klauzula kiértékelésére akkor kerül sor, ha a feltétel hamis és nem volt break

A Python a lambda formula alkalmazásával lehetővé teszi anonym függvények definiálását. Egy ilyen függvény egyetlen kifejezésre korlátozódik.

Ha a kód importálva van, akkor a __name__ változó a modul nevét tartalmazza, ha végrehajtandó akkor a __main__ stringet

A modulok hierarchikus struktúrába rendezhetők. Ez esetben az almodulokat tartalmazó modulok,
amiket packageeknek is neveznek, a filerendszer könyvtáraiként vannak definiálva.


A modulok elnevezése tehát konkatenációval történik : modul.almodul.
A kód portabilitásának egyszerűbbé tételéhez mindegyik könyvtárnak tartalmazni kell egy __init__.py nevű fájlt.

Ahhoz, hogy lehetséges legyen valamennyi almodul betöltése, ennek a fájlnak tartalmazni kell a package moduljainak listáját az __all__ változóban.

Egy objektumot egy minta, az osztálya alapján hozunk létre, ami definiál egy struktúrát (az attribútumokat) és viselkedést (a metódusokat).



Az objektum orientált programozás alapelvei


-- Példányosítás (instantiation) Egy objektumot egy minta, az osztálya alapján hozunk létre, ami definiál egy struktúrát (az attribútumokat)
és viselkedést (a metódusokat). Egy osztály egy objektumtípust definiál. Egy objektum egy egyedi osztálynak egy példánya.

-- Egységbezárás (encapsulation) Az adatok «el vannak rejtve» az objektumok belsejében, az adatokhoz való hozzáférét metódusokkal kontroláljuk.
Egy objektum állapotát nem szabad közvetlen módon manipulálni. Az objektumra úgy tekinthetünk, mint egy szolgáltatóra, nem pedig mint adatokra.

-- Polimorfizmus Az azonos interfaceű (a Python esetében elegendő a metódusok szignatúrája) objektumokat általánosan módon manipulálhatjuk,
még akkor is, ha az egzakt típusuk eltérő. Ez az elv lehetővé teszi egy példánynak egy másikkal való helyettesítését is (amíg az interfaceek kompatibilisek).

-- Öröklés (inheritance) Ez a mechanizmus teszi lehetővé az alapdefiníciók, az alapértelmezett viselkedések újrafelhasználását
és bizonyos viselkedési formák specializálását. Két osztály közötti öröklési viszony nem korlátozódik egyszerűen a kód megspórolására.


Annak az osztálynak, amelyik örököl, annak egy olyan osztálynak kell lenni, mint amitől örököl :
a macska egy állat, tehát a macska az állat osztály egy alosztálya.

Minden objektum : a stringek, az egészek, a listák, az osztályok, a modulok, stb. Dinamikusan minden manipulálható.



A dir() függvény bármelyik objektumnak megadja a tartalmát (az attribútumainak és a metódusainak a listáját).

from xml.dom import minidom
newdoc = minidom.Document()
newdoc
newroot = newdoc.createElement('root')

rootattr = newdoc.createAttribute('name')
rootattr.nodeValue = 'Érték'

textnode = newdoc.createElement('Szoveg')
text = newdoc.createTextNode('Ez a node  \ntartalmazza a szöveget')

comment = newdoc.createComment( 'Nagyon fontos információ')

newdoc.appendChild( newroot )
textnode.appendChild( text )

## serializáció és állományba mentés
foo = { 'a': 'aaa' , 'b': 'bbb' , 'c': 'ccc'}
output = open( 'foo.saved' , 'w')
pickle.dump( foo , output )        # (1 ,2) művelet
output.close()


## állománybol objektumok létrehozása
input = open('foo.saved' , 'r')
foo2 = pickle.load( input )      # (1 ,2)
input.close()
foo2


#!/usr/bin/env python3.2
#-*- coding:utf-8 -*-
input("A befejezéshez nyomja meg az Enter-t!")



Műveletei sorrend:
** a legerősebben köt
+ és - ha előjelként állnak (egyformán erősek), pl.: -2**4=-16 lesz, de (-2)**4 =16
* és / (egyformán erősek)
+ és - ha két operandust kötnek össze (egyformán erősek)





## szöveg manipuláció, elemzés

import random, time, os

 

# manipuláció

print("Hello" + " Lajos.")             # összefűzés

 

text = ['K.', 'Lajos']

print(' '.join(text))                  # lista tartalom összefűzés

 

print("kEcskeméti Lajos".upper())      # nagybetűsítés

print("KEcskeméti Lajos".lower())      # kisbetűsítés

print("kEcskeméti Lajos".capitalize()) # kezdő betű nagybetűsítés

print("kEcskeméti Lajos".title())      # szókezdet nagybetűsítés

print("kEcskeméti Lajos".swapcase())   # szöveg nagy betűit kicsire, kisbetűit nagyra cserél

 

print("  kEcskeméti Lajos  ".lstrip()) # baloldali space-k eltávolitása

print("  kEcskeméti Lajos  ".strip())  # mindkét oldalról a felesleges spaceket eltávolítja

print("Kecskeméti Lajos".replace("t", "X")) # csere

print("Kecskeméti Lajos".split("t"))        # listába metszés

 

dict = {"k": "1", "e": "4", "c": "7"}

print("111 Kecskeméti Lajos".maketrans(dict))

 

## Elemzés

print("Kecskeméti Lajos".count("t"))   # hányszor fordul elő benne

print("Kecskeméti Lajos".index("ét"))  # hanyadik pozicióban fordul elő benne

print("Kecskeméti Lajos".find("ét"))   # hanyadik pozicióban található meg benne

print("Kecskeméti Lajos".center(24, '*')) # középre igazított feltöltés

print("Hello {}.".format("lajos"))      # formázott kitöltés

print("bin: {0:b}, oct: {0:o}, hex: {0:x}".format(12))  # formázott kitöltés octal, binary és hexadecimal format

 

point = {'x':4,'y':-5}

print('{x} {y}'.format(**point))       # formázott kitöltés

#

print(len("Kecskeméti Lajos"))            # szöveg hossza

print("Kecskeméti Lajos".endswith('nem')) # végén megtalálható

print("Kecskeméti Lajos".startswith('Kecs')) # elején megtalálható

 

##----------------

## listák manipulálása, elemzése

 

names = ["Lajos", "Ildikó", "Dani", "Tamás"]

 

names.append("János")      # bővítés a végére

names.insert(1, "Csilla")  # bővítés a pozicióra

print(names)

names.remove("János")     # elem törlése a listából

del names[0]              # első pozició elem törlése

names[-1] = "Béla"        # utolsó elem lecserélése

print(names)

names.clear()             # lista kiürítés


Megjegyzések