Python Modüllerinde __name__ Özelliğinin Kullanımı

Modüller yenilir mi, içilir mi?

Öncelikle python’da modüllerden ufak bi’ bahsedeyim. Bildiğiniz gibi bir betik içersinde kodlarımızı tekrar tekrar yazmamak için bir kez fonksiyon tanımlamamız yeterli. O fonksiyonu kullanarak kodları tekrar kullanabiliyoruz. Peki ya aynı fonksiyona başka bir Python programında da ihtiyacımız olursa ne yapacağız? Cevap tabii ki modül kullanmak.

Python’da modül yazmak için birçok metod var ama bunlardan en basit ve en yaygın olanı fonksiyonlar ve değişkenler için .py uzantılı dosyaları kullanmak. Yani evet, şimdiye kadar yazdığınız her python betiği aynı zamanda birer modül. Diğer bir modül oluşturma yöntemi de C veya C++ programlama dilleri ile yazmaktır.

Yani sonuç olarak python’da modül dediğimiz şey aslında bizim yazdığımız betiklerdir. Yani yazdığımız her python betiği bir modül olarak başka bir betikte içe aktarılabilir(import). Modüller için ayrıca buraya bakabilirsiniz.

Bir modül’ün ismi

Yavaş yavaş asıl değinmek istediğim konuya geleyim. Python’da her modülün bir ismi vardır. Python yorumlayıcısı bir modülü yorumlarken o modüldeki tüm kodları çalıştırmadan önce bazı değişkenler tanımlar. Bunlardan birisi __name__ değişkenidir. Bu değişken, o modül’ün çalıştırılma şekline göre başka değerler alır.

Read on →

Otomatik Pep8’leyici: Autopep8

herkese merhabalar;

autopep8 için bölüm’ün e-posta listesine attığım e-postayı buraya da geçeyim.$

bildiğiniz gibi python için bir kod yazım stili var: pep8 (bilmeyenler için(1)), neyse, işte python ile yeni kod yazmaya başlayan arkadaşlar genellikle bu kurallara, stile uymakta zorlanır veya erinirler bunları uygulamaya, ne bileyim işleçler arasında boşluk bırakmak falan zor gelir kimisine.

biliyorsunuz genelde tembel insanlarız bizler :–) o yüzden adamlar sırf bu bizim eringeçliğimizi bildikleri için erinmemişler :–) ve kalkıp bir otomatik “pep8”leyici (tabir bana ait) yazmışlar, adı autopep8.

peki nedir bu autopep8, yenilir mi içilir mi?

kısaca şudur:

sen karman çorman yazıyorsun kodu(2) ve autopep8 sadece tek satırlık komutla kodunu pep8’e uygun hale(3) getiriyor.

  • önce autopep8’i kuralım sistemimize:

~$: sudo easy_install -ZU autopep8

  • kurulumdan sonra şöyle kullanabilirsiniz autopep8’i:

~$: autopep8 -ia bozuk_kod.py

artık kodunuz pep8 standartlarına uygun hale gelmiş oldu.

iki dosya arasındaki farkı görmek için şuradaki gist karşılaştırmasına bakabilirsiniz.

autopep8’e sokmadan önce bozuk_kod.py doyasının pep8 çıktısı 144 satırdı.(4)

daha fazlası burada.

\HTH

— sayz

Cinnamon Settings’de Python Hatası

masaüstü sistem olarak linux mint cinnamon 14 kullanıyorum geçenlerde cinnamon’un ayarlarını açmaya çalıştığımda açılmadı konsola yazdığımda şöyle bir hata alıyorum:

sayz@caravasar$  cinnamon-settings 
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static    : assertion `g_type_from_name (name) == 0' failed
import gobject._gobject

>>>

hata cinnamon’dan değil python’dan kaynaklanıyor belli ki ama daha çözüme ulaşamadım ulaşınca buraya da geçeceğim. launchpad‘de de hata kaydı açılmış bunula ilgili.

Merhaba Octopress

Merhaba Octopress

Gist denemesi, FizzBuzz kodu:

Kod blokları denemesi

Javascript Array SyntaxMDN Documentation
1
2
var arr1 = new Array(arrayLength);
var arr2 = new Array(element0, element1, ..., elementN);

kod blokları denemesi 2

liste analizi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
'''
Created on 22 Nis 2011

@author: sayz
'''


def analiz(liste):
  ks, ts, os, bs, ls = 0, 0, 0, 0, 0
  for it in liste:
      if type(it) == int:
          ts += 1
      elif type(it) == float:
          os += 1
      elif type(it) == bool:
          bs += 1
      elif type(it) == str:
          ks += 1
      else:
          ls += 1
  print "karakter:%d\ntamsayı: %d\nondaliksayı: %d\n \
  bool: %d\nliste: %d\n" % (ks, ts, os, bs, ls)

#örnek kullanım:
analiz([1, '1.1', [1.1, 1.1], [False, 7, True], -1])