## 33. repeat() bazı Python komutlarını gizler

Pek çok ders önce Reeborg'a bazı işleri nasıl tekrar ettirdiğimizi hatırlayın.

    def turn_right():
        repeat(turn_left, 3)

Bu derste kendi `repeat()`fonksiyonumuzu nasıl tanımlayacağımızı göreceğiz.

### İki yeni komut

Aşağıdakini deneyin:

    >>> for letter in "Reeborg":
    ...     print letter
    ...
    R
    e
    e
    b
    o
    r
    g

Reeborg kelimesindeki tüm harflerin tek tek yeni bir satırda yazılmasını Pyton'a söylemiş olduk. Eğer harflerin her birinin yeni bir satırda görüntülenmesini istemezsek virgül kullanırız.

    >>> for letter in "Reeborg":
    ...     print letter,
    ...
    R e e b o r g

Oldukça düzenli! Bu herhangi bir string ile çalışır! Bunun yerine Python'un sayıları saymasını isteseydik? for döngüsünü `range()` fonksiyonu ile birlikte kullanabiliriz.

    >>> for number in range(3):
    ...     print number
    ...
    0
    1
    2
    >>> for number in range(14):
    ...     print number,
    ...
    0 1 2 3 4 5 6 7 8 9 10 11 12 13

Kendi kendinize benzer örnekleri deneyin!

### `repeat()`'in tanımlanması

Artık kendi `repeat()`fonksiyonumuzu tanımlamak için gerekli malzemeye sahibiz:.

- Parametre kullanarak fonksiyon tanımlamayı biliyoruz.
- Değişkenlerin nasıl kullanılacağını biliyoruz.
- for döngüleri ile nasıl sayı sayılacağını biliyoruz.

Neden bekliyoruz ki?

    >>> def repeat(f, n):
    ...     for i in range(n):
    ...         f()
    ...
    >>> def f():
    ...     print "It's fun!"
    ...
    >>> repeat(f, 3)
    It's fun!
    It's fun!
    It's fun!

Aslında bu yaptığımız oldukça gelişmiş bir düzeyde Python programlamadır. `repeat()` fonksiyonuna kendiside bir fonksiyon olan bir parametre gönderdik. Bunu yapabilmek için fonksiyonun adından sonra parantez kullanmamalıyız. [Geriye dönün ve `turn_right()`'ı Reeborg'un dünyasında nasıl tanımladığımıza bir bakın.] Bunun yanında sayısal bir değer alan başka bir parametre (`n`) daha gönderdik. `repeat()`fonksiyonu tanımlandığında parametrelerden birisinin bir fonksiyon, diğerinin bir sayı olacağını Python dikkate almaz (ve bilmez de!).

Seçtiğim değişken isimlerinin (`f, n, i`) çok açıklayıcı olmadığına dikkat edin. Programcılar küçük döngülerde (az önceki gibi) veya küçük fonksiyonlarda tek harfli değişkenler kullanırlar böylece değişkenlerin kullanıldıkları yerler çok daha kolaylıkla görülebilir. Ancak değişkenlerin özel bir anlamı varsa onlara daha uzun ve açıklayıcı adlar vermek tercih edilir. Eğer buna inanmıyorsanız, 10. Tekrardan kesinlikle kaçının.dersine gidin ve dersin sonundaki Program okuma kısmını yeniden deneyin.

Belki de `repeat()` fonksiyonunu aşağıdaki gibi tanımlamalıydım:

    def repeat(function, number_of_times):
        for number in range(number_of_times):
            function()

### Deneyin!

Reeborg'un dünyasına gidin. İçinde `repeat()`'in en az iki kez kullanılmış olduğu herhangi bir alıştırmayı seçin. `repeat()`lerin yerine for döngüleri kullanarak çözüme ulaşın.

Many returns. - - Çukulatalı kek tarifi