Python
Geli¸tirme Ortamı
s
H. Turgut Uyar

Subat 2014
¸
License
© 2014 H. Turgut Uyar
You are free to:
Share – copy and redistribute the material in any medium or format
for any ...
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Python Kurulumu

Python kurulumu klas¨r hiyerar¸isi
o
s
<tepe klas¨r>
o
|
|- bin
|- lib
|
|- python3.4
|
|- site-packages
...
Ek Paket Kurulumu

paket dizin sitesi: http://pypi.python.org/
paket kurulumu:
pip install <paket>
Sanal Ortamlar

sistemin kullandı˘ı Python kurulumunu kurcalamak istemiyoruz
g
farklı projeler farklı kitaplıklar kullanma...
Sanal Ortamlar

sanal ortam yaratma komutu:
pyvenv <tepe klas¨r>
o
sanal ortama ge¸i¸ - ¸ıkı¸ komutları:
cs c s
activate -...
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Proje Yapısı
bir projenin klas¨r hiyerar¸isi
o
s
<tepe klas¨r>
o
|
|- <tepe paket>
|
|- mod¨ller
u
|- <alt paket>
|- setup...
Kurulum Beti˘i
g

kurulum beti˘i paketle ilgili ustveriyi tutar:
g
¨
isim, s¨r¨m, tanım, web adresi, yazar, e-posta adresi...
Kurulum Beti˘i
g

kurulum beti˘i: temel bilgiler
g
setup(
name=’mastermind’,
version=’1.0’,
description="A simple board ga...
Kurulum Beti˘i
g
kurulum beti˘i: sınıflandırma
g
setup(
...
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audi...
Kurulum Beti˘i
g

kurulum beti˘i: gereken paketler
g
setup(
...
install_requires=[’bottle’, ’beautifulsoup4’],
...
)
Kurulum Beti˘i
g

kurulum beti˘i: giri¸ noktaları
g
s
setup(
...
entry_points="""
[console_scripts]
mastermind=mastermind....
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Geli¸tirme Ara¸ları
s
c

t¨mle¸ik geli¸tirme ortamları:
u s
s
Eclipse Pydev, PyCharm Community
herhangi bir edit¨r kullanı...
Hata Ayıklama

kodun i¸inde calı¸ma duraklatılarak hata ayıklayıcıya ge¸ilebilir
c
¸ s
c
import pdb
pdb.set_trace()
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Stil

stil kuralları: PEP8
http://www.python.org/dev/peps/pep-0008/
stil kontrol aracı: pep8
PEP8 Kuralları

kod dosyası isimleri kısa, k¨¸uk harfle
uc¨
de˘i¸ken ve fonksiyon isimleri k¨¸uk harfle, birle¸tirme i¸in _
...
PEP8 Kuralları

girintileme: 4 bo¸luk
s
maksimum satır uzunlu˘u 79
g
tepe seviye sınıf ve fonksiyonlar arasında 2 satır bo...
PEP8 Kuralları

import komutları ayrı satırlara
# YANLI¸
S
import bottle, beautifulsoup4
˘
# DOGRU
import bottle
import be...
PEP8 Kuralları

parantezlerin hemen i¸inde bo¸luk yok
c
s
fonksiyon adından sonra bo¸luk yok
s
# YANLI¸
S
guesser.register...
PEP8 Kuralları

, : ¨ncesinde bo¸luk yok, sonrasında 1 bo¸luk var
o
s
s
= ve operat¨rlerin iki yanında birer bo¸luk var
o
...
PEP8 Kuralları
parametre varsayılan de˘erlerinde ve isimle ¸a˘ırmada bo¸luk yok
g
c g
s
# YANLI¸
S
def get_secret(choices,...
PEP8 Kuralları

atamaları hizalamak i¸in bo¸luk yok
c
s
# YANLI¸
S
name
= ’Alan Turing’
birth_year = 1912
age
= 102
˘
# DO...
PEP8 Kuralları
koleksiyon tipleri elemanlarının yazımında sonraki satırlar hizalanır
# YANLI¸
S
prices = {’tea’: 0.75, ......
PEP8 Kuralları
fonksiyon parametrelerinin yazımında sonraki satırlar hizalanır
# YANLI¸
S
def register_guess(self, guess,
...
PEP8 Kuralları

altsatıra devam eden komutlarda sonraki satırlar hizalanmaz
# YANLI¸
S
circumference = 2 * math.pi 
* r
ci...
Lisans
her kaynak dosyasının ba¸ında lisans bilgisi bulunmalı
s
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

Copyright (c) 2014 H. Tur...
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Belgeleme

belgeleme sistemi: Sphinx
http://sphinx-doc.org/
belgeleme projesi yaratma: sphinx-quickstart
HTML belgeleme ol...
Restructured Text

belgeleme formatı: ReStructured Text
http://docutils.sourceforge.net/rst.html
italik: *italic*
kalın: *...
Sphinx Ana Dosyası
Welcome to Mastermind’s documentation!
======================================
Mastermind is a simple bo...
Belgeleme

ba¸lıkları ayırmak i¸in altlarına === ya da --s
c
link: ‘text <address>‘_
User Guide
==========
Rules of the Ga...
Belgeleme

kod ¨rne˘i verme: code-block:: language
o g
¸ok sayıda programlama diline g¨re renklendirme
c
o
You can create ...
Kod Belgelemesi
a¸ıklama katarları ’’’ ya da """ ¸iftleri arasına yazılır
c
c
her mod¨l¨n ba¸ına mod¨l i¸in bir a¸ıklama k...
Kod Belgelemesi
a¸ıklama katarı tanımın hemen ardından gelir
c
def main():
"""Entry point for the game interface."""
...
c...
Kod Belgelemesi

ilk c¨mle kısa ve a¸ıklayıcı olmalı
u
c
class Chooser:
def finish(self):
"""Finish the game.
After this m...
Kod Belgelemesi

parametre a¸ıklamak i¸in: :param name:
c
c
parametre tipi belirtmek i¸in: :type name:
c
def evaluate(self...
Kod Belgelemesi

d¨n¨¸ de˘eri a¸ıklamak i¸in: :return:
o us g
c
c
d¨n¨¸ de˘eri tipi belirtmek i¸in: :rtype:
o us g
c
def e...
Kod Belgelemesi

olu¸abilecek aykırı durumlar i¸in: :raise Error:
s
c
def get_secret(self):
"""Get the secret of this choo...
Kod Belgelemesi

mod¨l referansları: :mod:‘...‘
u
sınıf referansları: :class:‘...‘
metot referansları: :meth:‘...‘
def mai...
Belgeleme
kod belgelemesini Sphinx’e eklemek i¸in
c
mod¨llere referans veren belgeleme dosyaları
u
:mod:`mastermind.choose...
Konular

1

Calı¸ma Ortamı
¸ s
Kurulum Yapısı
Proje Yapısı
Geli¸tirme Ara¸ları
s
c

2

Gelenekler
Stil
Belgeleme
Mesajlar
Mesajlar

kullanıcı etkile¸imi ama¸lı olmayan mesajlar
s
c
print() ile basılmamalı
mesaj g¨nl¨˘u kullanılmalı: logging
u u...
Mesaj G¨nl¨gu
u u˘¨

uygulamanın ba¸ında ayarlanmalı
s
import logging

def main():
logging.basicConfig(level=logging.INFO)...
Mesaj G¨nl¨gu
u u˘¨
yazdırılaca˘ı yerde ilgili d¨zeyin metodu ¸a˘ırılmalı
g
u
c g
import logging

class Chooser:
def __ini...
Upcoming SlideShare
Loading in …5
×

Python - Geliştirme Ortamı

969 views

Published on

Python kurulumunun yapısı. Bir Python projesinin yapısı. Sanal ortamlar. Kod stili, PEP8. Belgeleme, Sphinx.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
969
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Python - Geliştirme Ortamı

  1. 1. Python Geli¸tirme Ortamı s H. Turgut Uyar Subat 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 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  4. 4. Python Kurulumu Python kurulumu klas¨r hiyerar¸isi o s <tepe klas¨r> o | |- bin |- lib | |- python3.4 | |- site-packages |- include --> ¸alı¸tırılabilir dosyalar c s --> kitaplıklar --> s¨r¨me ba˘lı tepe klas¨r u u g o --> sonradan kurulan paketler --> ba¸lık dosyaları (C i¸in) s c
  5. 5. Ek Paket Kurulumu paket dizin sitesi: http://pypi.python.org/ paket kurulumu: pip install <paket>
  6. 6. Sanal Ortamlar sistemin kullandı˘ı Python kurulumunu kurcalamak istemiyoruz g farklı projeler farklı kitaplıklar kullanmak isteyebilir her proje i¸in yalnızca o projeye gereken kitaplıkları kurmak c istiyoruz her proje i¸in Python derleyip kurmak da istemiyoruz: c sanal ortamlar ¸o˘u dosyaya payla¸ılan bir ana kurulumdan eri¸ilir c g s s ek kitaplıklar sanal ortama ¨zel o
  7. 7. Sanal Ortamlar sanal ortam yaratma komutu: pyvenv <tepe klas¨r> o sanal ortama ge¸i¸ - ¸ıkı¸ komutları: cs c s activate - deactivate
  8. 8. Konular 1 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  9. 9. Proje Yapısı bir projenin klas¨r hiyerar¸isi o s <tepe klas¨r> o | |- <tepe paket> | |- mod¨ller u |- <alt paket> |- setup.py |- README.txt |- LICENSE.txt |- docs |- tests --> --> --> --> --> kurulum beti˘i g tanıtım dosyası lisans dosyası belgeler testler
  10. 10. Kurulum Beti˘i g kurulum beti˘i paketle ilgili ustveriyi tutar: g ¨ isim, s¨r¨m, tanım, web adresi, yazar, e-posta adresi, lisans, . . . uu anahtar s¨zc¨kler, sınıflandırıcılar o u gereken dı¸ paketler s
  11. 11. Kurulum Beti˘i g kurulum beti˘i: temel bilgiler g setup( name=’mastermind’, version=’1.0’, description="A simple board game.", author=’H. Turgut Uyar’, author_email=’uyar@tekir.org’, url=’http://code.tekir.org/mastermind/’, license=’GPL’, ... )
  12. 12. Kurulum Beti˘i g kurulum beti˘i: sınıflandırma g setup( ... classifiers=[ "Development Status :: 3 - Alpha", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General ...", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", ], keywords=[’game’, ’mastermind’], ... )
  13. 13. Kurulum Beti˘i g kurulum beti˘i: gereken paketler g setup( ... install_requires=[’bottle’, ’beautifulsoup4’], ... )
  14. 14. Kurulum Beti˘i g kurulum beti˘i: giri¸ noktaları g s setup( ... entry_points=""" [console_scripts] mastermind=mastermind.cli:main """ )
  15. 15. Konular 1 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  16. 16. Geli¸tirme Ara¸ları s c t¨mle¸ik geli¸tirme ortamları: u s s Eclipse Pydev, PyCharm Community herhangi bir edit¨r kullanılabilir: o vim, emacs, geany
  17. 17. Hata Ayıklama kodun i¸inde calı¸ma duraklatılarak hata ayıklayıcıya ge¸ilebilir c ¸ s c import pdb pdb.set_trace()
  18. 18. Konular 1 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  19. 19. Stil stil kuralları: PEP8 http://www.python.org/dev/peps/pep-0008/ stil kontrol aracı: pep8
  20. 20. PEP8 Kuralları kod dosyası isimleri kısa, k¨¸uk harfle uc¨ de˘i¸ken ve fonksiyon isimleri k¨¸uk harfle, birle¸tirme i¸in _ gs uc¨ s c mixedCase tercih edilmiyor sınıf isimleri CamelCase de˘i¸meyecek veriler b¨y¨k harfle gs u u
  21. 21. PEP8 Kuralları girintileme: 4 bo¸luk s maksimum satır uzunlu˘u 79 g tepe seviye sınıf ve fonksiyonlar arasında 2 satır bo¸luk s
  22. 22. PEP8 Kuralları import komutları ayrı satırlara # YANLI¸ S import bottle, beautifulsoup4 ˘ # DOGRU import bottle import beautifulsoup4
  23. 23. PEP8 Kuralları parantezlerin hemen i¸inde bo¸luk yok c s fonksiyon adından sonra bo¸luk yok s # YANLI¸ S guesser.register_guess( guess, plus, minus ) years = [ 1998, 2011, 2004 ] prices = { ’tea’: 0.75, ’coffee’: 1.25 } ˘ # DOGRU guesser.register_guess(guess, plus, minus) years = [1998, 2011, 2004] prices = {’tea’: 0.75, ’coffee’: 1.25}
  24. 24. PEP8 Kuralları , : ¨ncesinde bo¸luk yok, sonrasında 1 bo¸luk var o s s = ve operat¨rlerin iki yanında birer bo¸luk var o s # YANLI¸ S years = [1998 , 2011 , 2004] if r > 0 : area=math.pi*r*r ˘ # DOGRU years = [1998, 2011, 2004] if r > 0: area = math.pi * r * r
  25. 25. PEP8 Kuralları parametre varsayılan de˘erlerinde ve isimle ¸a˘ırmada bo¸luk yok g c g s # YANLI¸ S def get_secret(choices, n = 4): ... get_secret([1, 2, 3, 4], n = 3) ˘ # DOGRU def get_secret(choices, n=4): ... get_secret([1, 2, 3, 4], n=3)
  26. 26. PEP8 Kuralları atamaları hizalamak i¸in bo¸luk yok c s # YANLI¸ S name = ’Alan Turing’ birth_year = 1912 age = 102 ˘ # DOGRU name = ’Alan Turing’ birth_year = 1912 age = 102
  27. 27. PEP8 Kuralları koleksiyon tipleri elemanlarının yazımında sonraki satırlar hizalanır # YANLI¸ S prices = {’tea’: 0.75, ... ’coffee’: 1.25, ..., ’soda’: 1.0} ˘ # DOGRU prices = {’tea’: 0.75, ... ’coffee’: 1.25, ..., ’soda’: 1.0} prices = { ’tea’: 0.75, ... ’coffee’: 1.25, ... ’soda`’: 1.0 }
  28. 28. PEP8 Kuralları fonksiyon parametrelerinin yazımında sonraki satırlar hizalanır # YANLI¸ S def register_guess(self, guess, plus, minus): ... guesser.register_guess(guess, plus, minus) ˘ # DOGRU def register_guess(self, guess, plus, minus): ... guesser.register_guess(guess, plus, minus)
  29. 29. PEP8 Kuralları altsatıra devam eden komutlarda sonraki satırlar hizalanmaz # YANLI¸ S circumference = 2 * math.pi * r circumference = 2 * math.pi * r ˘ # DOGRU circumference = 2 * math.pi * r
  30. 30. Lisans her kaynak dosyasının ba¸ında lisans bilgisi bulunmalı s # # # # # # # # # # # # # # # # Copyright (c) 2014 H. Turgut Uyar <uyar@tekir.org> This file is part of Mastermind. Mastermind is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Mastermind is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mastermind. If not, see <http://www.gnu.org/licenses/>. import ...
  31. 31. Konular 1 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  32. 32. Belgeleme belgeleme sistemi: Sphinx http://sphinx-doc.org/ belgeleme projesi yaratma: sphinx-quickstart HTML belgeleme olu¸turma: make html s PDF belgeleme olu¸turma: make latexpdf s ayar dosyası: conf.py
  33. 33. Restructured Text belgeleme formatı: ReStructured Text http://docutils.sourceforge.net/rst.html italik: *italic* kalın: **bold** madde listesi: maddelerin ¨n¨nde * ya da o u numaralı liste: maddelerin ¨n¨nde numara ya da # o u
  34. 34. Sphinx Ana Dosyası Welcome to Mastermind’s documentation! ====================================== Mastermind is a simple board game. Contents: .. toctree:: :maxdepth: 2 user-guide developer-guide Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`
  35. 35. Belgeleme ba¸lıkları ayırmak i¸in altlarına === ya da --s c link: ‘text <address>‘_ User Guide ========== Rules of the Game ----------------- `Mastermind`_ is a two-player game. .. _Mastermind: http://en.wikipedia.org/wiki/Mastermind
  36. 36. Belgeleme kod ¨rne˘i verme: code-block:: language o g ¸ok sayıda programlama diline g¨re renklendirme c o You can create a new chooser player as follows: .. code-block:: python from mastermind.chooser import Chooser choices = tuple(range(10)) player1 = Chooser(choices, 4)
  37. 37. Kod Belgelemesi a¸ıklama katarları ’’’ ya da """ ¸iftleri arasına yazılır c c her mod¨l¨n ba¸ına mod¨l i¸in bir a¸ıklama katarı uu s u c c # Copyright ... # ... # ... """ This module contains the command-line interface for Mastermind. """ import ...
  38. 38. Kod Belgelemesi a¸ıklama katarı tanımın hemen ardından gelir c def main(): """Entry point for the game interface.""" ... class Chooser: """Random chooser.""" def evaluate(self, guess): """Evaluate a guess for the chosen secret.""" ... secret = property(fget=get_secret) """The secret of this chooser."""
  39. 39. Kod Belgelemesi ilk c¨mle kısa ve a¸ıklayıcı olmalı u c class Chooser: def finish(self): """Finish the game. After this method has been invoked, further guesses will not be evaluated. """ ...
  40. 40. Kod Belgelemesi parametre a¸ıklamak i¸in: :param name: c c parametre tipi belirtmek i¸in: :type name: c def evaluate(self, guess): """Evaluate a guess for the chosen secret. :param guess: The guess to evaluate. :type guess: seq """
  41. 41. Kod Belgelemesi d¨n¨¸ de˘eri a¸ıklamak i¸in: :return: o us g c c d¨n¨¸ de˘eri tipi belirtmek i¸in: :rtype: o us g c def evaluate(self, guess): """Evaluate a guess for the chosen secret. ... :return: The number of correct and misplaced guesses. :rtype: tuple(int, int) """
  42. 42. Kod Belgelemesi olu¸abilecek aykırı durumlar i¸in: :raise Error: s c def get_secret(self): """Get the secret of this chooser. This will only work if the game is finished. :raise RuntimeError: If called before the game is finished. """
  43. 43. Kod Belgelemesi mod¨l referansları: :mod:‘...‘ u sınıf referansları: :class:‘...‘ metot referansları: :meth:‘...‘ def main(): """Entry point for the game interface. First, it creates two players, a :class:`mastermind.choosers.Chooser` and a :class:`mastermind.guessers.base.BaseGuesser`. Then, it ... """
  44. 44. Belgeleme kod belgelemesini Sphinx’e eklemek i¸in c mod¨llere referans veren belgeleme dosyaları u :mod:`mastermind.choosers` ========================== .. currentmodule:: mastermind.choosers .. automodule:: mastermind.choosers .. autoclass:: mastermind.choosers.Chooser :show-inheritance: :members:
  45. 45. Konular 1 Calı¸ma Ortamı ¸ s Kurulum Yapısı Proje Yapısı Geli¸tirme Ara¸ları s c 2 Gelenekler Stil Belgeleme Mesajlar
  46. 46. Mesajlar kullanıcı etkile¸imi ama¸lı olmayan mesajlar s c print() ile basılmamalı mesaj g¨nl¨˘u kullanılmalı: logging u ug¨ mesajların ¨nem d¨zeyleri var: o u CRITICAL > ERROR > WARNING > INFO > DEBUG ekrana, dosyaya v.b. kanallara yazdırılabilir
  47. 47. Mesaj G¨nl¨gu u u˘¨ uygulamanın ba¸ında ayarlanmalı s import logging def main(): logging.basicConfig(level=logging.INFO) ...
  48. 48. Mesaj G¨nl¨gu u u˘¨ yazdırılaca˘ı yerde ilgili d¨zeyin metodu ¸a˘ırılmalı g u c g import logging class Chooser: def __init__(self, choices, n): logging.info("choosing a secret") self.choices = choices self.n_items = n self.__secret = ... logging.debug("the secret is: ...") ...

×