<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ftoptas blog &#187; python dersleri</title>
	<atom:link href="http://ftoptas.com/tag/python-dersleri/feed/" rel="self" type="application/rss+xml" />
	<link>http://ftoptas.com</link>
	<description>[beta]</description>
	<lastBuildDate>Mon, 30 Jan 2012 20:19:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Python ile MySQL Bağlantısı ve Temel İşlemler</title>
		<link>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/</link>
		<comments>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 13:02:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[bağlanma]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldb]]></category>
		<category><![CDATA[python dersleri]]></category>
		<category><![CDATA[veritabanı]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=305</guid>
		<description><![CDATA[Python ile MySQLe bağlanmak için]]></description>
			<content:encoded><![CDATA[<p><img src="http://ftoptas.com/wp-content/uploads/2009/09/python-mysql.jpg" alt="python-mysql" title="python-mysql" width="300" height="124" class="aligncenter size-full wp-image-306" /><br />
Python ile MySQLe bağlanmak için önce MySQLdb kütüphanesini <a href="http://sourceforge.net/projects/mysql-python/" target="_blank">şuradan</a> indirip kuralım. Kütüphanenin doğru çalışıp çalışmadığını kontrol etmek için pythonu açıp kütüphaneyi import etmeye çalışalım.</p>
<pre name="code" class="python">
import MySQLdb
</pre>
<p>Eğer problem yoksa devam edebiliriz. Önce veritabanına bağlanmak için sunucu, kullanıcı adı, parola ve veritabanı ismini girelim.</p>
<pre name="code" class="python">
import MySQLdb
db = MySQLdb.connect(host="localhost",user="root",passwd="par01a",db="python")
cursor = db.cursor()
</pre>
<p>şimdi istediğimiz sorguları yazabiliriz.<br />
<span id="more-305"></span></p>
<pre name="code" class="python">
cursor.execute("select * from users")
result = cursor.fetchall()
</pre>
<p>Eğer tablodan birkaç eleman çekmek istiyorsak fetchall() yerine fetchmany() kullanabiliriz.</p>
<pre name="code" class="python">
result = cursor.fetchmany(3)
</pre>
<p>Tablodaki satır sayısını öğrenmek için</p>
<pre name="code" class="python">
cursor.rowcount
</pre>
<p>Veritabanına bilgi girmek için</p>
<pre name="code" class="python">
s = """insert into users (username, password) values ("yeni-kullanici","yeni-sifre")"""
cursor.execute(s)
</pre>
<p>en son eklenen girdinin id numarasını öğrenmek için</p>
<pre name="code" class="python">
cursor.lastrowid
</pre>
<p>Eğer veritabanına tek seferde birden fazla veri eklemek istiyorsak şu yöntemi kullanabiliriz:</p>
<pre name="code" class="python">
s = "insert into users (username, password) values (%s,%s)"
cursor.executemany(s,[("ali","alininparolali"),("veli","velininparolası"),("ayşe","ayşeninparolası")])
</pre>
<p>Son olarak da işimiz bittikten sonra bağlantıyı kapatıyoruz.</p>
<pre name="code" class="python">
cursor.close()
db.close()
</pre>
<p>Kolay gelsin&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-mysql-baglantisi-ve-temel-islemler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python ile HTTP POST/GET Metodu Kullanma</title>
		<link>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/</link>
		<comments>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[get]]></category>
		<category><![CDATA[httplib]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[post metodu]]></category>
		<category><![CDATA[python dersleri]]></category>
		<category><![CDATA[urllib]]></category>

		<guid isPermaLink="false">http://ftoptas.com/?p=239</guid>
		<description><![CDATA[Elimizde bazı veriler var ve]]></description>
			<content:encoded><![CDATA[<p>Elimizde bazı veriler var ve bunları POST veya GET metoduyla biyerlere göndermemiz lazım. Yanımızda Python betiklerini çalıştırabilicek bir cihaz (misal: herhangi bir bilgisayar -işletim sistemi farketmez- veya s60 telefon) varsa sorun yok. Hemen kodları yazmaya başlayabilirsiniz. İlk örneğimizde sadece string verileri göndereceğiz. Mesela herhangi bir siteye form bilgilerini giriyoruz.</p>
<pre class="python">import urllib, httplib

veriler = urllib.urlencode({'veri':'herhangi bir veri'})
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
baglanti = httplib.HttpConnection("ftoptas.com")
baglanti.request("POST","/ornekform/gonder/",veriler,headers)
cevap = baglanti.getresponse()
baglanti.close()</pre>
<p><span id="more-239"></span></p>
<p>Önce kullanacağımız kütüphaneleri çağırıyoruz. Biz burada urllib ve httplib kütüphanelerini kullandık. Ardından göndereceğimiz verileri belirledik.    Gördüğünüz gibi verileri dictionary şeklinde yazıyoruz. İlk değer verinin ismi ikincisi de değeri oluyor. headers parametresiyle de bu bağlantının nereden geldiğini belirtiyoruz. Sunucu bağlantının nereden geldiğini header bilgilerinden anlar. Dolayısıyla buraya yazacağımız değerlerle bağlantının bir web tarayıcısından geliyormuş gibi görünmesini sağlayabiliriz. Bunun nedeni ise google gibi bazı siteler  header bilgilerine göre cevap vermektedir. Bir nevi sunucuyu kandırmış gibi oluyoruz. <span style="color: #0000ff;">baglanti</span> isminde bir bağlantı yapıyoruz ve yaptığımız bağlantıyla <span style="color: #0000ff;">POST</span> metodunu kullanarak <span style="color: #0000ff;">ftoptas.com/ornekform/gonder/</span> adresine bilgileri gönderiyoruz. Eğer bu göndermenin ardında bir cevap dönüyorsa bunu da <span style="color: #0000ff;">getresponse()</span> fonksiyonuyla alıyoruz.  Bu şekilde gönderdiğimiz bilgileri okumak için sunucumuzu da PHP ile şu şekilde kodlarız:</p>
<pre class="php">$dosyaadi = "deneme.txt"
// verileri yazacağımız dosyayı açıyoruz
$dosya = fopen($dosyaadi,'a+')
// POST metoduyla gelen verileri okuyoruz
$veri = $_POST['veri']
// okuduğumuz verileri dosyaya yazdırıyoruz
fwrite($dosya, $veri, strlen($veri))
// dosyayı kapatıyoruz
fclose($dosya)
// cevap olarak istemciye dönecek veri
echo "veri başarıyla iletildi."</pre>
<p>Eğer string değil de bir dosya göndermek istiyorsak bunu da şöyle yapabiliriz:</p>
<pre class="python">dosya = open(dosyaadi,'r')
veri = dosya.read()
dosya.close()
veri = veri.encode("zlib")
headers = {"Content-type":"application/x-gzip","Accept":"text/plain"}
baglanti = httplib.HttpConnection(sunucu)
baglanti.request("POST",yol,veri,headers)
cevap = baglanti.getresponse()
cevap_dosya = cevap.read()
baglanti.close()</pre>
<p>Burada ise okuduğumuz dosyayi read() yöntemiyle stringe dönüştürüyoruz. Bu stringi de zlib ile kodlayarak sıkıştırılmış bir dosya haline getiriyoruz. Dolayısıyla header bilgilerinde bunun sıkıştırılmış dosya biçimi olduğunu belirtiyoruz. Geri kalan kısmı ilk örnekte yaptığımız gibi oluyor. cevap_dosya ise veri gönderme sonucunda sunucun bize verdiği cevabın stringe dönüşmüş halidir. Bu yöntemle gönderilmiş verileri PHP sunucumuzda okumak için aşağıdaki gibi kodlayalım.</p>
<pre class="php">// gelen veriyi okuyoruz
$veri = file_get_contents('php://input')
// sıkıştırılmış olarak geldiği için gelen veriyi
// tekrar eski haline getirmek için uncompress yapıyoruz
$dosya = gzuncompress($veri)
// eğer veri yoksa -1 değer döndürüyoruz
if (!$dosya){
echo -1
die()
}
// veriyi kaydedeceğimiz dosyanın ismini belirtiyoruz.
// dosya ismi unique yani seçiliyor yani aynı isimde 2 farklı dosya
// bu kısma herhangi bir dosya ismi de verebilirsiniz.
$uid = uniqid()
$dosyaadi = "$uid.tmp"
// dosyayı oluşturuyoruz
$yaz = fopen($dosyaadi,'wb')
// verileri dosyaya yazıyoruz
fputs($yaz,$dosya,strlen($dosya))
// dosyayı kapatıp cevap dönüyoruz
fclose($yaz)
echo "dosya iletildi."</pre>
<p>Bu kodların tamamı PyS60&#8242;da da çalışmaktadır. Yani telefondan da bunları yapabiliriz.  Şimdi yaptığımız iki örnekte sunucumuzu PHP ile programladık. Bir sonraki yazımda Python sunucuları kullanacağız. Bunun için de Google App Engine üzerinde Django kurup çalıştıracağız. Yani hem sunucu hem istemci tamamiyle Python ile yazılmış olacak.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-ile-http-postget-metodu-kullanma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Python lambda Fonksiyonu</title>
		<link>http://ftoptas.com/python-lambda-fonksiyonu/</link>
		<comments>http://ftoptas.com/python-lambda-fonksiyonu/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 19:21:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[lambda]]></category>
		<category><![CDATA[lambda fonksiyonu]]></category>
		<category><![CDATA[lambda function]]></category>
		<category><![CDATA[python dersleri]]></category>

		<guid isPermaLink="false">http://ftoptas.wordpress.com/?p=157</guid>
		<description><![CDATA[Python ile programlama yapmaya başladıktan]]></description>
			<content:encoded><![CDATA[<p>Python ile programlama yapmaya başladıktan sonra, bana pythondan daha eğlenceli gelen bir programlama dili olmadığını düşünüyorum. Pythonun en önemli özelliklerinden biri az kodla çok şey anlatabilme özelliğinin olmasıdır. Bunun bir örneği ise <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonudur.</p>
<p><strong><span style="color:#008000;">lambda</span> Fonksiyonu Ne İşe Yarar?</strong></p>
<p>Fonksiyon yazmak kodlarımızın daha anlaşılır, kısa ve temiz olmasını sağlar. Aynı kodları tekrar tekrar kullanmamamız için yazarız. Fakat bazen ufak tefek işler yapmak için defalarca fonksiyon yazarız. Fonksiyonları kod tekrarı yapmamak için kullanıyorduk hani. İşte tam burada lambda fonksiyonu devreye giriyor. Tek değişkenli bir fonksiyon kullanmamız gerekiyorsa bunu işlem içinde tek satırda ekstra kod veya satır eklemeden olayı halletmemizi sağlar. Mesela elimizde bir dizi var ve dizinin her elemanını bir sayıyla çarpıp başka bir dizi oluşturmamız lazım. Bunu yapmak için bir <span style="color:#008000;"><strong>for</strong></span> döngüsü kullanabiliriz fakat bu fazladan bir değişken kullanmamıza neden olur ve enaz iki satır olur. Hele bi de bu dizinin içindeki bazı elemanları bir eleme yaparak alıyorsak bu da bize bir <span style="color:#008000;"><strong>if</strong></span> kullanmamıza malolur. lambda fonksiyonu genelde <span style="color:#ff6600;"><strong>map(), filter(), reduce()</strong></span> gibi fonksiyonlarla birlikte kullanılır. Lafı fazla uzatmadan örneklere geçelim.</p>
<p><span id="more-157"></span></p>
<p>Bir f fonksiyonu yazalım çıkış değeri giriş değerinin 3 katı olsun.</p>
<pre name="code" class="python">
&gt;&gt;&gt;def f(x):
...    return x*3
...
&gt;&gt;&gt;f(2)
6
&gt;&gt;&gt;
</pre>
<p><span style="color:#ff6600;">f(x)</span> fonksiyonunu tanımladık ve<span style="color:#ff6600;"> f(2)=6 </span>oldu. Şimdi aynı işi lambda ile yapacağız</p>
<pre name="code" class="python">
&gt;&gt;&gt;g=lambda x:x*3
&gt;&gt;&gt;g(2)
6
&gt;&gt;&gt;
</pre>
<p>veya</p>
<pre name="code" class="python">
&gt;&gt;&gt;(lambda x:x*3)(2)
6
&gt;&gt;&gt;
</pre>
<p>Şimdi biraz daha karışık bir örnek yapalım yani lambda yı <strong><span style="color:#ff6600;">filter() </span></strong>fonksiyonu ile kullanma:</p>
<pre name="code" class="python">&gt;&gt;&gt;aylar=["Ocak","Subat","Mart","Nisan","Mayis","Haziran","Temmuz","Agustos","Eylul","Ekim","Kasim","Aralik"]
&gt;&gt;&gt;print filter(lambda x:x[0]=="M",aylar)
['Mart', 'Mayis']
&gt;&gt;&gt;
</pre>
<p>yazdığımız fonksiyon bize M harfi ile başlayan ayları çıkış olarak verdi. lambda fonksiyonunu filter ile kullandığımızda dizinin içinde belli bir koşula uyan (buradaki koşulumuz M harfi ile başlaması) elemanları çekme.</p>
<p>lambda yı<span style="color:#ff6600;"><strong> map()</strong></span> fonksiyonu ile kullanma:</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print map(lambda x:x**2,sayilar)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
&gt;&gt;&gt;
</pre>
<p>Burada elde ettiğimiz sonuç sayilar dizisindeki her elemanın karesidir. <span style="color:#ff6600;"><strong>map()</strong></span> fonksiyonuyla her elemana bir işlem uygularız.</p>
<pre name="code" class="python">
&gt;&gt;&gt;sayilar=[0,1,2,3,4,5,6,7,8,9]
&gt;&gt;&gt;print reduce(lambda x,y:x+y,sayilar)
45
&gt;&gt;&gt;
</pre>
<p><strong><span style="color:#ff6600;">reduce()</span></strong> fonksiyonuyla tüm elemanları topladık.</p>
<pre name="code" class="python">
&gt;&gt;&gt;asal=range(2,50) #asal dizisi 2 den 50 ye kadar elemanı olan bir dizi
&gt;&gt;&gt;for i in range(2,8):
...    asal=filter(lambda x:x==i or x%i,asal)</span>
...
&gt;&gt;&gt;print asal
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
&gt;&gt;&gt;
</pre>
<p>Evet gördüğünüz gibi bir lambda fonksiyonuyla 2 ile 50 arasındaki asal sayıları bulduk. Kullandığımız formül &#8220;Sieve of Eratosthenes&#8221; formülü yani kalburdan geçirmek gibi bişey. İlk olarak 2 ile 50 arasındaki sayıları bir diziye yazdık. Ardından kullandığımız döngüde i sayısını 2&#8242;den 8&#8242;e artırdık. Dizideki her elemanı 2 koşula <strong>(x==i or x%i)</strong> bağlı kalması şartıyla dizinin içinde bıraktık. Yani bu 2 koşula uymayanlar döngünü bir sonraki adımında dizinin içinde olmayacak. Böylece döngü bittiğinde asal sayıları elde etmiş olduk.</p>
<pre name="code" class="python">
&gt;&gt;&gt;print map(lambda x:len(x),'suan disarda kar yagiyor'.split())
[4, 7, 3, 7]
&gt;&gt;&gt;
</pre>
<p>split() fonksiyonu ile stringimizi boşlukların olduğu yerlerden bölüyoruz yani örnek verecek olursak<span style="color:#ff6600;"> &#8216;py thon&#8217;.split() </span>yazdığımızda <span style="color:#ff6600;">['py', 'thon']</span> çıktısını alırız. &#8216;suan disarda kar yagiyor&#8217; stringini önce <span style="color:#ff6600;"><strong>split()</strong></span> fonksiyonu ile kelimelere ayırıyoruz sonrada lambda ile her kelimenin kaç harf olduğunu buluyoruz.</p>
<p>Bu örnekleri çoğaltabiliriz. Kısacası <span style="color:#008000;"><strong>lambda</strong></span> fonksiyonu ekstradan bir fonksiyon veya döngü kullanmadan toplu işlem yapmammız içindir.</p>
]]></content:encoded>
			<wfw:commentRss>http://ftoptas.com/python-lambda-fonksiyonu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

