Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python - Kitaplıklar

1,188 views

Published on

Python dilinde yaygın kullanılan kitaplıklar. Veri tipleri, veri tabanları, grafik arayüzler, web uygulamaları, bilimsel uygulamalar.

Published in: Education
  • Be the first to comment

Python - Kitaplıklar

  1. 1. Python Kitaplıklar H. Turgut Uyar Ocak 2014
  2. 2. License © 2014 H. Turgut Uyar You are free to: Share – copy and redistribute the material in any medium or format for any purpose, even commercially. Under the following terms: Attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. NoDerivatives – If you remix, transform, or build upon the material, you may not distribute the modified material. For more information: https://creativecommons.org/licenses/by-nd/4.0/ Read the full license: https://creativecommons.org/licenses/by-nd/4.0/legalcode
  3. 3. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  4. 4. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  5. 5. Ondalık Sayılar ondalık sayı: decimal.Decimal ikili ger¸el sayılardaki temsil sorunu yok c bazı ger¸el sayıların temsiline daha uygun (¨rne˘in para) c o g >>> 0.07 * 3 0.21000000000000002 >>> from decimal import Decimal >>> n = Decimal(’0.07’) >>> n * 3 Decimal(’0.21’)
  6. 6. Kesirler kesirli sayı: fractions.Fraction de˘erler kendili˘inden normalize edilir g g >>> from fractions import Fraction >>> Fraction(16, -10) Fraction(-8, 5) >>> Fraction(’3/7’) Fraction(3, 7)
  7. 7. Numaralandırma numaralandırma: enum.Enum >>> from enum import Enum >>> class Color(Enum): ... red = 1 ... green = 2 ... blue = 3 ... >>> for c in Color: ... print(c) ... Color.red Color.green Color.blue >>> Color.red == 1 False
  8. 8. Numaralandırma >>> from enum import Enum >>> class Color(Enum): ... red = 1 ... green = 2 ... blue = 3 ... yellow = 4 ... >>> import random >>> choices = list(Color) >>> random.sample(choices, 3) [<Color.red: 1>, <Color.yellow: 4>, <Color.blue: 3>]
  9. 9. Tarih ve Zaman tarih: datetime.date zaman: datetime.time zaman farkı: datetime.timedelta >>> from datetime import date >>> today = date.today() >>> holiday = date(2014, 4, 23) >>> holiday - today datetime.timedelta(62) >>> print(holiday - today) 62 days, 0:00:00
  10. 10. Diziler dizi: array.array listelere benzer ancak elemanların tipi sabit >>> from array import array >>> x = array(’i’, [1, 2, 3]) >>> x[0] 1 >>> x.append(4) >>> x.append(4.1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: integer argument expected, got float
  11. 11. Koleksiyonlar koleksiyonlar: collections sıralı s¨zl¨k (collections.OrderedDict) o u varsayılan de˘erli s¨zl¨k (collections.defaultdict) g o u isimli coklu (collections.namedtuple) ¸
  12. 12. Sıralı S¨zl¨kler o u anahtarlar eklendikleri sırada tutulur >>> d1 = {} >>> d1[’a’] = 1 >>> d1[’b’] = 2 >>> d1[’c’] = 3 >>> list(d1.items()) [(’c’, 3), (’b’, 2), (’a’, 1)] >>> from collections import OrderedDict >>> d2 = OrderedDict() >>> d2[’a’] = 1 >>> d2[’b’] = 2 >>> d2[’c’] = 3 >>> list(d2.items()) [(’a’, 1), (’b’, 2), (’c’, 3)]
  13. 13. Varsayılan De˘erli S¨zl¨kler g o u anahtar yoksa belirtilen tipten ba¸langı¸ de˘eri: s c g int → 0, list → [], . . . >>> from collections import defaultdict >>> s = ’mississippi’ >>> d = defaultdict(int) >>> for k in s: ... d[k] += 1 ... >>> list(d.items()) [(’m’, 1), (’s’, 4), (’p’, 2), (’i’, 4)]
  14. 14. Varsayılan De˘erli S¨zl¨kler g o u >>> from collections import defaultdict >>> s = ’mississi’ >>> d = defaultdict(list) >>> for i, k in enumerate(s): ... d[k].append(i) ... >>> list(d.items()) [(’m’, [0]), (’s’, [2, 3, 5, 6]), (’i’, [1, 4, 7])]
  15. 15. ˙ Isimli Coklular ¸ basit (metotsuz), de˘i¸tirilemeyen sınıf gs >>> from collections import namedtuple >>> Point = namedtuple(’Point’, [’x’, ’y’]) >>> p = Point(x=11, y=22) >>> p.x + p.y 33 >>> p.x = 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: can’t set attribute
  16. 16. Nesne Kopyalama de˘i¸tirilebilir nesnelerin atanmasında dikkat etmek gerek gs >>> >>> >>> >>> [4, >>> [4, >>> >>> >>> [4, >>> [4, a = [1, 2, 3] b = a b[0] = 4 b 2, 3] a 2, 3] c = a[:] c[1] = 5 c 5, 3] a 2, 3]
  17. 17. Nesne Kopyalama sı˘ kopya: copy.copy() g derin kopya: copy.deepcopy() >>> >>> >>> >>> >>> >>> [1, >>> >>> >>> [1, import copy a = [1, 2, [3, 4]] b = copy.copy(a) b[0] = 7 b[2][0] = 5 a 2, [5, 4]] c = copy.deepcopy(a) c[2][0] = 3 a 2, [5, 4]]
  18. 18. Nesne Kopyalama b = copy.copy(a) komutundan sonra
  19. 19. Nesne Kopyalama b[0] = 7 komutundan sonra
  20. 20. Nesne Kopyalama b[2][0] = 5 komutundan sonra
  21. 21. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  22. 22. Sisteme Eri¸im s sistemle ilgili bilgi ve i¸lemler: sys s >>> import sys >>> sys.version[:45] ’3.4.0rc1 (default, Feb 11 2014, 14:40:33) n[G’ >>> sys.version_info.major, sys.version_info.minor (3, 4) >>> sys.platform ’linux’
  23. 23. Sisteme Eri¸im s komut satırı parametreleri: sys.argv programı sonlandırma: sys.exit() import sys if len(sys.argv) < 2: print("You did not specify a file name.") print("Usage: %s filename" % sys.argv[0]) sys.exit() file_name = sys.argv[1]
  24. 24. ˙sletim Sistemi I¸ i¸letim sistemi servisleri: os s ortam de˘i¸kenleri: os.environ gs proseslerle ilgili i¸lemler: bulunulan dizin, proses numarası, . . . s >>> import os >>> home = os.environ[’HOME’] >>> home ’/home/uyar’ >>> os.chdir(home) >>> os.getcwd() ’/home/uyar’ >>> os.getpid() 597
  25. 25. Dosya Sistemi dosya yolu i¸lemleri: os.path s dosya yolu ayırma i¸areti: os.path.sep s >>> import os.path >>> os.path.sep ’/’ >>> home = os.environ[’HOME’] >>> os.path.join(home, ’Projects’) ’/home/uyar/Projects’ >>> path = os.path.join(home, ’Projects’, ’hello.py’) >>> os.path.basename(path) ’hello.py’ >>> os.path.dirname(path) ’/home/uyar/Projects’
  26. 26. Dosya Sistemi >>> import os.path >>> home = os.environ[’HOME’] >>> os.path.isfile(home) False >>> os.path.isdir(home) True >>> test_path = os.path.join(home, ’test’) >>> os.path.exists(test_path) False >>> os.mkdir(test_path) >>> os.path.exists(test_path) True >>> os.rmdir(test_path) >>> os.path.exists(test_path) False
  27. 27. Dosya Sistemi y¨ksek d¨zeyli dosya sistemi i¸lemleri: shutil u u s dosya kopyalama: shutil.copyfile(dst, src) klas¨r¨ altındakilerle birlikte kopyalama: ou shutil.copytree(dst, src) klas¨r¨ altındakilerle birlikte silme: ou shutil.rmtree(src)
  28. 28. Dosya ˙ Isimleri bir desene uyan dosya isimlerini bulma: glob.glob(pattern) >>> import glob >>> glob.glob(’/etc/*.cfg’) [’/etc/enscript.cfg’, ’/etc/vdpau_wrapper.cfg’]
  29. 29. D¨zenli ˙ u Ifadeler d¨zenli ifadeler: re u ba¸tan e¸le¸tirme: re.match(pattern, string) s s s herhangi bir yerden e¸le¸tirme: s s re.search(pattern, string) >>> import re >>> valid_input = ’d{4}’ >>> bool(re.match(valid_input, ’2011’)) True >>> bool(re.match(valid_input, ’a2011’)) False >>> bool(re.search(valid_input, ’a2011’)) True >>> bool(re.search(valid_input, ’620118’)) True
  30. 30. D¨zenli ˙ u Ifadeler ifadeyi ¨nceden derlemek daha etkin: o re.compile(pattern) >>> import re >>> valid_input = re.compile(’d{4}’) >>> bool(valid_input.match(’2011’)) True
  31. 31. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  32. 32. Dosyalar dosya a¸ma / yaratma: open() c dosya okuma, yazma, kapama, imle¸ konumlandırma: c .read() .write() .close() .seek() >>> outfile = open(’test.txt’, ’w’) >>> outfile.write(’line1nline2nline3n’) 18 >>> outfile.close() >>> infile = open(’test.txt’, ’r’) >>> infile.readlines() [’line1n’, ’line2n’, ’line3n’] >>> infile.close()
  33. 33. Katar Giri¸-¸ ıkı¸ı sC s katarları dosya gibi kullanma: io.StringIO >>> from io import StringIO >>> stream = StringIO() >>> stream.write(’line1nline2nline3n’) 18 >>> stream.seek(0) 0 >>> stream.readlines() [’line1n’, ’line2n’, ’line3n’] >>> stream.getvalue() ’line1nline2nline3n’ >>> stream.close()
  34. 34. Kalıcılık nesnelerin kalıcılı˘ı: pickle g dosyaya yazma: pickle.dump(obj, outfile) dosyadan y¨kleme: pickle.load(infile) u >>> import pickle >>> obj1 = (42, 3.14, [’yin’, ’yang’]) >>> outfile = open(’save.dat’, ’wb’) >>> pickle.dump(obj1, outfile) >>> outfile.close() >>> infile = open(’save.dat’, ’rb’) >>> obj2 = pickle.load(infile) >>> infile.close() >>> obj2 (42, 3.14, [’yin’, ’yang’]) >>> obj2 == obj1 True
  35. 35. Serile¸tirme s katara serile¸tirme: pickle.dumps(obj) s katardan y¨kleme: pickle.loads(s) u >>> import pickle >>> obj1 = (42, 3.14, [’yin’, ’yang’]) >>> dump = pickle.dumps(obj1) >>> obj2 = pickle.loads(dump) >>> obj2 (42, 3.14, [’yin’, ’yang’]) >>> obj2 == obj1 True
  36. 36. JSON JSON serile¸tirme: json s b¨t¨n tipleri desteklemiyor uu >>> import json >>> obj1 = (42, 3.14, [’yin’, ’yang’]) >>> dump = json.dumps(obj1) >>> dump ’[42, 3.14, ["yin", "yang"]]’ >>> obj2 = json.loads(dump) >>> obj2 [42, 3.14, [’yin’, ’yang’]] >>> obj1 == obj2 False
  37. 37. SQL SQL aray¨z¨ standart: DB-API u u SQLite s¨r¨c¨s¨ standart kitaplıkta: sqlite3 uu uu PostgreSQL: Psycopg http://initd.org/psycopg/ MySQL: MySQL-Python http://mysql-python.sourceforge.net/
  38. 38. SQL Aray¨z¨ u u import sqlite3 as dbapi conn = dbapi.connect(’:memory:’) query = "CREATE TABLE POINTS (X INTEGER, Y INTEGER)" conn.execute(query) conn.commit() conn.close()
  39. 39. SQL Aray¨z¨ u u query = "INSERT INTO POINTS (X, Y) VALUES(1, 2)" conn.execute(query) query = "INSERT INTO POINTS (X, Y) VALUES(?, ?)" conn.execute(query, (x1, y1)) conn.execute(query, (x2, y2)) query = "SELECT X, Y FROM POINTS WHERE ..." rows = conn.execute(query) for row in rows: print(row[0])
  40. 40. Nesne - Ba˘ıntı E¸le¸tirmesi g s s nesne - ba˘ıntı e¸le¸tirmesi: SQLAlchemy g s s http://www.sqlalchemy.org/
  41. 41. DBM Veri Tabanları veri kaydetme i¸in s¨zl¨k benzeri aray¨z: dbm c o u u anahtar ve de˘erler katar g >>> import dbm >>> import pickle >>> db = dbm.open(’cache’, ’c’) >>> v1 = [42, 3.14, (’yin’, ’yang’)] >>> db[’1’] = pickle.dumps(v1) >>> db.close() >>> db = dbm.open(’cache’, ’r’) >>> v2 = pickle.loads(db[’1’]) >>> v2 [42, 3.14, (’yin’, ’yang’)]
  42. 42. NoSQL Veri Tabanları MongoDB: PyMongo http://github.com/mongodb/mongo-python-driver CouchDB: Couchdbkit http://couchdbkit.org/ Apache Cassandra: pycassa http://github.com/pycassa/pycassa Redis: redis-py http://github.com/andymccurdy/redis-py ZODB (Zope Object DataBase) http://zodb.org/
  43. 43. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  44. 44. Grafik Aray¨zler u masa¨st¨: u u Qt: PyQt http://www.riverbankcomputing.com/software/pyqt/ Gtk: PyGtk http://www.pygtk.org/ wxWidgets: wxPython http://www.wxpython.org/ hem masa¨st¨ hem mobil cihazlar: Kivy u u http://kivy.org/ oyun geli¸tirme: Pygame s http://www.pygame.org/
  45. 45. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  46. 46. Komut Satırı Aray¨zleri u komut satırı parametreleri: argparse docopt http://docopt.org/ etkile¸imli aray¨z: cmd s u
  47. 47. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  48. 48. HTTP Ba˘lantısı g HTTP ba˘lantısı kurmak i¸in: urllib.request g c >>> import urllib.request >>> url = ’http://www.python.org/’ >>> page = urllib.request.urlopen(url) >>> content = page.read() >>> content[:45] b’<!doctype html>nnn<!--[if lt IE 7]> <html c’
  49. 49. Web Ba˘lantısı g Request nesnesi kullanılarak ayar yapılabilir import urllib.request url = ’http://www.python.org’ req = urllib.request.Request(url) req.add_header(’User-Agent’, ’Mozilla/5.0’) page = urllib.urlopen(req) content = page.read()
  50. 50. HTTP Ba˘lantısı g daha kolay bir aray¨z: Requests u http://www.python-requests.org/ >>> import requests >>> url = ’http://www.python.org/’ >>> resp = requests.get(url) >>> resp.status_code 200 >>> resp.headers[’content-type’] ’text/html; charset=utf-8’ >>> resp.encoding ’utf-8’ >>> resp.text[:45] ’<!doctype html>nnn<!--[if lt IE 7]> <html c’
  51. 51. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  52. 52. HTML Ayrı¸tırma s HTML ayrı¸tırma: BeautifulSoup s http://www.crummy.com/software/BeautifulSoup/ >>> import urllib.request >>> url = ’http://www.python.org’ >>> page = urllib.request.urlopen(url) >>> content = page.read() >>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup(content) >>> soup.title.string ’Welcome to Python.org’ >>> soup.find_all(’img’)[0][’src’] ’/static/img/python-logo.png’
  53. 53. XML XML i¸leme: xml.etree s sınırlı XPath deste˘i g >>> import urllib.request >>> url = ’http://feeds.bbci.co.uk/news/rss.xml’ >>> page = urllib.request.urlopen(url) >>> content = page.read() >>> from xml.etree import ElementTree as ET >>> root = ET.fromstring(content) >>> root.tag, root.attrib (’rss’, {’version’: ’2.0’}) >>> root.find(’channel’).find(’title’).text ’BBC News - Home’ >>> root.findall(’.//pubDate’)[0].text ’Thu, 20 Feb 2014 13:06:57 GMT’
  54. 54. XML XPath ve XSLT deste˘i: lxml g http://lxml.de/ >>> import urllib.request >>> url = ’http://feeds.bbci.co.uk/news/rss.xml’ >>> page = urllib.request.urlopen(url) >>> content = page.read() >>> from lxml import etree as ET >>> root = ET.fromstring(content) >>> path = ’.//item[starts-with(title, "VIDEO:")]/title’ >>> root.xpath(path)[0].text ’VIDEO: The flood risk to political careers’
  55. 55. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  56. 56. Web Ana¸atıları c mikro ana¸atılar ←→ her ¸ey i¸inde ana¸atılar c s c c URL y¨nlendirmesi o sayfa ¸ablonları s kalıcılık oturumlar
  57. 57. Web Ana¸atıları c mikro: Bottle http://bottlepy.org/ mikro: Flask http://flask.pocoo.org/ her ¸ey i¸inde: Django s c http://www.djangoproject.com/ her ¸ey i¸inde, k¨¸ukten b¨y¨yebilir: Pyramid s c uc¨ u u http://pylonsproject.org/
  58. 58. ¨ Ornek: Bottle import bottle @bottle.route(’/hello/<name>’) def hello(name): return "Hello %s!" % name bottle.run(host=’localhost’, port=8080)
  59. 59. Sablon Sistemleri ¸ Mako http://www.makotemplates.org/ Jinja http://jinja.pocoo.org/ Genshi http://genshi.edgewall.org/ Cheetah http://www.cheetahtemplate.org/
  60. 60. Konular 1 Temel Mod¨ller u Veri Tipleri Sistem Kalıcılık 2 Uygulama Aray¨zleri u Grafik Aray¨zler u Komut Satırı Aray¨zleri u 3 Web Uygulamaları HTTP HTML / XML Web Ana¸atıları c 4 Di˘er g Bilimsel Uygulamalar
  61. 61. Rasgelelik rasgele sayılar: random ¸e¸itli da˘ılımlara g¨re rasgele sayılar uretme c s g o ¨ >>> import random >>> random.random() 0.6700382575805274 >>> random.randrange(7, 12) 11 >>> digits = list(range(10)) >>> random.shuffle(digits) >>> digits [2, 5, 8, 3, 4, 7, 6, 9, 0, 1] >>> random.gauss(1.0, 0.3) 1.0562756924074337
  62. 62. ˙ Istatistik temel istatistik i¸lemleri: statistics s ortalama, varyans, . . . >>> import statistics >>> weights = [76, 95, 55, 74, 76, 81, 63] >>> statistics.mean(weights) 74.28571428571429 >>> statistics.median(weights) 76 >>> statistics.variance(weights) 163.23809523809524
  63. 63. Matrisler y¨ksek ba¸arımlı matris ger¸eklemesi: NumPy u s c http://www.numpy.org/ >>> import numpy as np >>> np.array([[1, 2, 3], [4, 5, 6]], np.int32) array([[1, 2, 3], [4, 5, 6]], dtype=int32) >>> np.zeros((3, 4)) array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]])
  64. 64. Veri ˙sleme I¸ veri temsili ve i¸lenmesi: Pandas s http://pandas.pydata.org/ veri g¨rselle¸tirme: matplotlib o s http://www.matplotlib.org/

×